我有以下代码:
sqoop import --connect jdbc:mysql://localhost/export \
--username root \
--password cloudera \
--table cust \
--hive-import \
--create-hive-table \
--fields-terminated-by ' ' \
--hive-table default.cust \
--target-dir /user/hive/warehouse/cust \
--compression-codec org.apache.org.io.compress.GzipCodec \
--as-avrodatafile \
-m 1
得到以下错误,请帮忙。 Hive导入与导入AVRO格式不兼容。
答案 0 :(得分:0)
目前,Sqoop不支持将AVRO格式直接导入HIVE表格,因此您可以导入HDFS并在HIVE中创建 EXTERNAL TABLE
第1步:导入hdfs
sqoop import --connect jdbc:mysql:// localhost / export \
- 用户名root --password cloudera - 表格 --target-dir / user / hive / warehouse / cust \ --compression-codec org.apache.org.io.compress.GzipCodec \ --as-avrodatafile -m 1
此导入将在当前目录(Linux)中创建一个模式文件,扩展名为 .avsc 。将此文件复制到HDFS中的某个位置(PATH_TO_THE_COPIED_SCHEMA)。
步骤2:在HIVE中创建一个外部表,如
CREATE EXTERNAL TABLE cust 存储为AVRO LOCATION'hdfs:/// user / hive / warehouse / cust' TBLPROPERTIES('avro.schema.url'='hdfs:/// PATH_TO_THE_COPIED_SCHEMA/cust.avsc');