从 Impala 分区拼花表创建文本表
Posted
技术标签:
【中文标题】从 Impala 分区拼花表创建文本表【英文标题】:Creating text table from Impala partitioned parquet table 【发布时间】:2016-03-18 12:52:08 【问题描述】:我有一张镶木地板,格式如下:
.impala_insert_staging
yearmonth=2013-04
yearmonth=2013-05
yearmonth=2013-06
...
yearmonth=2016-04
每个目录下面都是我的镶木地板文件。我需要把它们放到我的另一张桌子上,它只有一个
.impala_insert_staging
文件。
请帮忙。
【问题讨论】:
我真的,真的不明白是什么问题。你为什么不运行一个简单的查询,比如INSERT INTO TABLE target SELECT cola, colb, ... FROM source
并使用 Impala 来实现它的本质,即数据库引擎?
【参考方案1】:
我发现最好的方法是将文件拉入本地,然后sqoop
将它们备份到文本表中。
为了拉下镶木地板,我执行了以下操作:
impala-shell -i <ip-addr> -B -q "use default; select * from <table>" -o filename '--output_delimiter=\x1A'
不幸的是,这会将yearmonth
值添加为我表中的另一列。所以我要么进入我的 750GB 文件并在最后一列中使用 sed/awk
,要么使用 mysqlimport
(因为我也在使用 MySQL)只导入我感兴趣的列。
最后我将数据sqoop到一个新的文本表中。
sqoop import --connect jdbc:mysql://<mysqlip> --table <mysql_table> -uroot -p<pass> --hive-import --hive-table <new_db_text>
【讨论】:
以上是关于从 Impala 分区拼花表创建文本表的主要内容,如果未能解决你的问题,请参考以下文章