内容简介:mysql的数据库数据过大,做数据分析,需要从mysql转向hadoop。从mysql转数据到hive中,本想用parquet格式,但是一直都没有成功,提示Hive import and create hive table is not compatible with importing into ParquetFile format.
mysql的数据库数据过大,做数据分析,需要从 mysql 转向hadoop。
1,遇到的问题
从mysql转数据到hive中,本想用parquet格式,但是一直都没有成功,提示
Hive import and create hive table is not compatible with importing into ParquetFile format.
sqoop不管是mysql直接到hive。还是把mysql导出成parquet文件,然后在把parquet文件,在导入到hive的外部表,都没有成功
存为avro格式也是一样。
2,安装sqoop
下载:http://mirrors.shu.edu.cn/apache/sqoop/1.4.7/
# tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz # cp -r sqoop-1.4.7.bin__hadoop-2.6.0 /bigdata/sqoop
3,配置sqoop
3.1,配置用户环境变量
# cd ~ # vim .bashrc export SQOOP_HOME=/bigdata/sqoop export PATH=$ZOOKEEPER_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:/bigdata/hadoop/bin:$SQOOP_HOME/bin:$PATH # source .bashrc
3.2,配置sqoop-env.sh
# vim /bigdata/sqoop/sqoop-env.sh #Set path to where bin/hadoop is available export HADOOP_COMMON_HOME=/bigdata/hadoop #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/bigdata/hadoop #set the path to where bin/hbase is available #export HBASE_HOME= #Set the path to where bin/hive is available export HIVE_HOME=/bigdata/hive export HIVE_CONF_DIR=/bigdata/hive/conf //要加上,不然会提示hiveconf找不到 #Set the path for where zookeper config dir is export ZOOCFGDIR=/bigdata/zookeeper/conf
3.3,导入数据
# sqoop import \ --connect jdbc:mysql://10.0.0.237:3306/bigdata \ --username root \ --password ******* \ --table track_app \ -m 1 \ --warehouse-dir /user/hive/warehouse/tanktest.db \ --hive-database tanktest \ --create-hive-table \ --hive-import \ --hive-table track_app
这样就可以导入了,不过导入hive后,在hdfs上面存储的文件格式是文本形势。
hive> describe formatted track_app; OK # col_name data_type comment id int log_date int log_time int user_id int ticket string # Detailed Table Information Database: tanktest Owner: root CreateTime: Fri Feb 15 18:08:55 CST 2019 LastAccessTime: UNKNOWN Retention: 0 Location: hdfs://bigserver1:9000/user/hive/warehouse/tanktest.db/track_app Table Type: MANAGED_TABLE Table Parameters: comment Imported by sqoop on 2019/02/15 18:08:42 numFiles 1 numRows 0 rawDataSize 0 totalSize 208254 transient_lastDdlTime 1550225337 # Storage Information SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe InputFormat: org.apache.hadoop.mapred.TextInputFormat //文本格式,也可以在hdfs上面,打开文件查看内容 OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Compressed: No Num Buckets: -1 Bucket Columns: [] Sort Columns: [] Storage Desc Params: field.delim \u0001 line.delim \n serialization.format \u0001 Time taken: 0.749 seconds, Fetched: 56 row(s)
注意:
导致hive表后,通过sql(hive,spark-sql)的方式,看一下,能不能查询到数据。如果查不到数据,说明没有导入成功。
4,sqoop参数
Import和export参数解释
Common arguments:
--connect <jdbc-uri> :连接RDBMS的jdbc连接字符串,例如:–connect jdbc:mysql:// MYSQL_SERVER:PORT/DBNAME。
--connection-manager <class-name> :
--hadoop-home <hdir> :
--username <username> :连接RDBMS所使用的用户名。
--password <password> :连接RDBMS所使用的密码,明文。
--password-file <password-file> :使用文件存储密码。
-p :交互式连接RDBMS的密码。
Import control arguments:
--append :追加数据到HDFS已经存在的文件中。
--as-sequencefile :import序列化的文件。
--as-textfile :import文本文件 ,默认。
--columns <col,col,col…> :指定列import,逗号分隔,比如:–columns “id,name”。
--delete-target-dir :删除存在的import目标目录。
--direct :直连模式,速度更快(HBase不支持)
--split-by :分割导入任务所使用的字段,需要明确指定,推荐使用主键。
--inline-lob-limit < n > :设置内联的BLOB对象的大小。
--fetch-size <n> :一次从数据库读取n个实例,即n条数据。
-e,--query <statement> :构建表达式<statement>执行。
--target-dir <d> :指定HDFS目标存储目录。
--warehouse-dir <d> :可以指定为-warehouse-dir/user/hive/warehouse/即导入数据的存放路径,如果该路径不存在,会首先创建。
--table <table-name> :将要导入到hive的表。
--where <where clause> :指定where从句,如果有双引号,注意转义 \$CONDITIONS,不能用or,子查询,join。
-z,--compress :开启压缩。
--null-string <null-string> :string列为空指定为此值。
--null-non-string <null-string> :非string列为空指定为此值,-null这两个参数are optional, 如果不设置,会指定为”null”。
--autoreset-to-one-mapper :如果没有主键和split-by用one mapper import (split-by和此选项不共存)。
-m,--num-mappers <n> :建立n个并发执行import,默认4个线程。
Incremental import arguments:
--check-column <column> :Source column to check for incremental change
--incremental <import-type> :Define an incremental import of type ‘append’ or ‘lastmodified’
--last-value <value> :Last imported value in the incremental check column
Hive arguments:
--create-hive-table :自动推断表字段类型直接建表,hive-overwrite功能可以替代掉了,但Hive里此表不能存在,不然操作会报错。
--hive-database <database-name> :指定要把HDFS数据导入到哪个Hive库。
--hive-table <table-name> :设置到Hive当中的表名。
--hive-delims-replacement <arg> :导入到hive时用自定义的字符替换掉\n, \r, and \01。
--hive-drop-import-delims :导入到hive时删除字段中\n, \r,\t and \01等符号;避免字段中有空格导致导入数据被截断。
--hive-home <dir> :指定Hive的存储目录。
--hive-import :将HDFS数据导入到Hive中,会自动创建Hive表,使用hive的默认分隔符。
--hive-overwrite :对Hive表进行覆盖操作(需配合--hive-import使用,如果Hive里没有表会先创建之),不然就是追加数据。
--hive-partition-key <partition-key> :hive分区的key。
--hive-partition-value <partition-value> :hive分区的值。
--map-column-hive <arg> :类型匹配,SQL类型对应到hive类型。
HBase arguments:
--column-family < family > :把内容导入到hbase当中,默认是用主键作为split列。
--hbase-create-table :创建Hbase表。
--hbase-row-key < col > :指定字段作为row key ,如果输入表包含复合主键,用逗号分隔。
--hbase-table < table-name > :指定hbase表。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ASP.NET Aries 高级开发教程:Excel导入之多表高级导入配置(中)
- 将Excel文件导入数据库(POI+Excel+MySQL+jsp页面导入)第一次优化
- [MySQL]备份和导入
- Android Studio 导入源码
- Python导入订单是否重要
- hive 导入 mysql文本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
全景探秘游戏设计艺术
Jesse Schell / 吕阳、蒋韬、唐文 / 电子工业出版社 / 2010-6 / 69.00元
撬开你脑子里的那些困惑,让你重新认识游戏设计的真谛,人人都可以成为成功的游戏设计者!从更多的角度去审视你的游戏,从不完美的想法中跳脱出来,从枯燥的游戏设计理论中发现理论也可以这样好玩。本书主要内容包括:游戏的体验、构成游戏的元素、元素支撑的主题、游戏的改进、游戏机制、游戏中的角色、游戏设计团队、如何开发好的游戏、如何推销游戏、设计者的责任等。 本书适合任何游戏设计平台的游戏设计从业人员或即将......一起来看看 《全景探秘游戏设计艺术》 这本书的介绍吧!