sqoop导入数据为什么数据量对不上?

283 2024-11-13 18:52

一、sqoop导入数据为什么数据量对不上?

①查数据总数不对,MySQL的count(1) = 108120条数据,但是导入至hive发现只有108112条数据,数据发生了丢失。

②应查数据值不对,查询到某个字段,MySQL值中仅有1,2两种值,但是hive表中包含1,2,以及一串看不懂的数字。 经反复核对数据,发现问题症结,所以就将它记录下来了。

二、怎么用sqoop把hive的数据导入mysql?

运行环境 centos 5.6 hadoop hive

sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具。

上海尚学堂hadoop大数据培训组原创,陆续有hadoop大数据技术相关文章奉上,请多关注!

在使用过程中可能遇到的问题:

sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。

sqoop-1.2.0-CDH3B4依赖hadoop-core-0.20.2-CDH3B4.jar,所以你需要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar复制到sqoop-1.2.0-CDH3B4/lib中。

1 首先安装sqoop,如果你使用的是clouder分发版的话就非常简单

# yum install sqoop

如果用官方版本的话

# cd /etc/yum.repos.d

# wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo

# yum -y install sqoop

sqoop就会安装完成

2 使用sqoop

首先将mysql-connector-java-5.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下

3 导入导出数据库

1)列出mysql数据库中的所有数据库命令

# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456

2)连接mysql并列出数据库中的表命令

# sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456

命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码

3)将关系型数据的表结构复制到hive中

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test

其中 --table username为mysql中的数据库test中的表 --hive-table test 为hive中新建的表名称

4)从关系数据库导入文件到hive中

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import

5)将hive中的表数据导入到mysql中

./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03

如果报错

11/08/05 10:51:22 INFO mapred.JobClient: Running job: job_201108051007_0010

11/08/05 10:51:23 INFO mapred.JobClient: map 0% reduce 0%

11/08/05 10:51:36 INFO mapred.JobClient: Task Id : attempt_201108051007_0010_m_000000_0, Status : FAILED

java.util.NoSuchElementException

at java.util.AbstractList$Itr.next(AbstractList.java:350)

at uv_info.__loadFromFields(uv_info.java:194)

at uv_info.parse(uv_info.java:143)

at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79)

at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38)

at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)

at com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187)

at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)

at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)

at org.apache.hadoop.mapred.Child$4.run(Child.java:270)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:396)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)

at org.apache.hadoop.mapred.Child.main(Child.java:264)

此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。

hive默认的字段分隔符为'\001'

./sqoop export --connect jdbc:mysql://localhost:3306/datacenter --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03 --input-fields-terminated-by '\t'

三、java导入项目乱码处理

Java导入项目乱码处理方法

在日常的Java开发中,经常会遇到导入项目时出现乱码的情况。乱码问题给我们的开发和调试带来了很大的困扰,因此解决导入项目乱码问题就显得尤为重要。本文将介绍几种常见的处理方法,帮助开发者解决Java导入项目乱码问题。

1. 修改项目编码方式

一种常见的解决方法是修改项目的编码方式。在Java项目中,经常会遇到项目编码和文件编码不一致导致乱码问题。可以尝试将项目的编码方式统一设置为UTF-8,这样可以有效避免乱码问题的发生。

2. 使用正确的字符集

在Java开发中,使用正确的字符集也是解决乱码问题的关键。在读取和写入文件时,需要明确指定字符集。常见的字符集包括UTF-8、GBK等。根据项目的实际情况选择合适的字符集可以有效避免乱码问题。

3. 处理文件编码

另一个常见的导入项目乱码处理方法是处理文件编码。有时候文件本身的编码方式不正确,会导致在导入项目时出现乱码。可以使用文本编辑工具查看文件的编码方式,并将其转换为正确的编码方式,避免乱码问题的发生。

4. 使用正确的IDE设置

在使用集成开发环境(IDE)导入项目时,也需要注意设置。不同的IDE对于项目编码的处理方式可能有所不同,需要确保IDE的设置与项目的编码方式一致,避免出现乱码问题。

5. 转换文件格式

有时候文件的格式也会导致乱码问题的发生。可以尝试将文件转换为其他格式再导入项目,看是否能够解决乱码问题。常见的文件格式包括文本格式、UTF-8格式等。

6. 使用编码转换工具

如果以上方法仍无法解决乱码问题,可以尝试使用编码转换工具。编码转换工具可以帮助将文件从一种编码方式转换为另一种编码方式,帮助解决乱码问题。

7. 调试程序

最后一种解决方法是通过调试程序来查找乱码问题的原因。可以在程序中添加日志输出,逐步排查导致乱码问题的原因,并进行相应的处理,确保最终解决乱码问题。

总的来说,解决Java导入项目乱码问题需要综合考虑项目编码、文件编码、字符集等多个因素。通过合理设置编码方式、使用正确的字符集、处理文件编码等方法,可以有效避免乱码问题的发生,提高开发效率。

四、Sqoop功能?

Sqoop(发音:skup)是一款开源的工具,Sqoop功能主要是用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

五、wps文件导入乱码?

1、首先在我们的电脑桌面上找到电脑管家并打开它,然后进入工具箱。

2、接着点击左侧的文档。

3、然后点击文件恢复工具。

4、接着点击文档修复。

5、然后点击修复已损坏文件。

6、最后找到这个文档并点击打开,等待修复完成就可以打开这个乱码的文档了。这样就解决了Word和Wps打开文件乱码的问题了。

六、iphone歌曲导入乱码?

将乱码歌曲名字和歌词改一下字体,改成宋体看看~

七、excel导入数据乱码?

1. 第一步,双击或者右击打开有乱码的Excel表格,有可能是因为公式的原因出现乱码。

2. 第二步,来到Excel软件页面后,点击公式的输入框。

3. 第三步,在之前的公式前面输入iferror,接着在公式后面输入,""。

4. 第四步,完成公式的输入后,按回车键,执行公式。

5. 第五步,拖动填充键至最后一组数据。

6. 第六步,我们可以看到表格中的乱码变成了空白值。

八、sqoop工作原理?

Sqoop的工作原理是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是MySQL、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。在特定场景下,抽取过程会有很大的性能提升。

如果要用Sqoop,必须正确安装并配置Hadoop,因依赖于本地的Hadoop环境启动MR程序;MySQL、Oracle等数据库的JDBC驱动也要放到Sqoop的lib目录下。

九、sqoop使用详解?

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建maptask任务来处理每个区块。

十、eclipse导入的项目乱码?

解决方法如下:

1、首先在软件中,右键出现中文乱码的java项目名,在右键菜单中选择最后一项Properties。

2、点击【Properties】,在弹出窗口选择Resource选项,然后在右侧操作窗口中的第一项选择other选项。

3、在选项右边下拉选择中点选合适的编码格式,如果知道导入项目的使用了什么编码,可以尝试选择utf-8,然后确定Apple and close就可以了。

4、也可以在功能菜单选择project,然后选择最后一个选项Properties。

5、设置完成后,中文乱码就解决了。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片