sqoop从配置单元表导出-指定分隔符

s1ag04yj  于 2021-06-04  发布在  Sqoop
关注(0)|答案(0)|浏览(283)

我有一张用gzip压缩的 hive table。
表格创建

CREATE TABLE table_text (id int, xml string)
PARTITIONED BY (year string, month string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
TBLPROPERTIES ('textinputformat.record.delimiter'='#');

xml列包含的xmls数据打印得很漂亮。这就是为什么要选择不同的行分隔符。
从另一个表加载数据

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

INSERT OVERWRITE table table_text partition(year=2016,month=2)
select id, decompress(xml) from table_avro;

验证负载

Select count(*) from table_text;

这会给出一条记录,因为源表\u avro也有一条记录。
sqoop导出
我想将这个gzip压缩数据从这个配置单元表导出到mysql表。

sqoop export --connect jdbc:mysql://localhost/test --driver com.mysql.jdbc.Driver --username hive --password hive --table  mysql_table_export --hcatalog-table table_text --input-fields-terminated-by '|' --input-lines-terminated-by '#'

这会将14000多行导出到mysql表。事实上,xml有14000多行。
如何指定输入数据行和字段分隔符,以便正确读取和导出数据?是否还需要指定输出分隔符?
更新示例:
表\文本-这只是一个示例,因为我无法粘贴实际的,但它看起来像。xml跨越多行。

1000|<parent><child>sample
 </child></parent>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题