在开始查询之后,我们将介绍以下更多步骤: INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select books from table; 在我的例子中,temp文件夹下生成的数据在 deflate 格式,如下所示:
$ ls
000000_0.deflate
000001_0.deflate
000002_0.deflate
000003_0.deflate
000004_0.deflate
000005_0.deflate
000006_0.deflate
000007_0.deflate
DROP TABLE IF EXISTS TestHiveTableCSV;
CREATE TABLE TestHiveTableCSV
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' AS
SELECT Column List FROM TestHiveTable;
18条答案
按热度按时间nkkqxpd91#
默认分隔符为“
^A
". 在python语言中,它是“\x01
".当我想更改分隔符时,我使用sql,例如:
然后,将分隔符+“
^A
“作为新的分隔符。wljmcqd82#
这是我发现的输出hiveql结果的最友好的csv方式。
您不需要任何grep或sed命令来格式化数据,而是hive支持它,只需要添加outputformat的额外标记。
2w2cym1i3#
在开始查询之后,我们将介绍以下更多步骤:
INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select books from table;
在我的例子中,temp文件夹下生成的数据在deflate
格式,如下所示:以下是解压deflate文件并将所有内容放入一个csv文件的命令:
91zkwejq4#
如果你使用色调这是相当简单的。只需转到hue中的配置单元编辑器,执行配置单元查询,然后将结果文件本地保存为xls或csv,也可以将结果文件保存到hdfs。
fnatzsnv5#
你可以用
INSERT
…DIRECTORY
…,如本例所示:pinkon5k6#
与上面ray的回答类似,hortonworks数据平台中的HiveView2.0还允许您运行HiveQuery,然后将输出保存为csv。
wj8zmpe17#
如果您是在windows上进行的,您可以使用python脚本hivehoney将表数据提取到本地csv文件中。
它将:
登录到堡垒主机。
跑吧。
基尼特。
直线(与你的查询)。
将echo从beeline保存到windows上的文件中。
执行如下:
x7rlezfr8#
我尝试了各种选择,但这将是最简单的解决方案之一
Python
Pandas
:你也可以使用
tr "|" ","
要将“|”转换为“,”laik7k3q9#
我有一个类似的问题,这就是我如何能够解决它。
步骤1-将数据从配置单元表加载到另一个表中,如下所示
步骤2-将blob从配置单元仓库复制到具有适当扩展名的新位置
oxosxuxt10#
可以使用配置单元字符串函数
CONCAT_WS( string delimiter, string str1, string str2...strn )
例如:pkln4tw611#
或
对于tsv,只需在上述查询中将csv更改为tsv,然后运行您的查询
zsohkypk12#
如果您想要一个csv文件,那么您可以修改lukas的解决方案,如下所示(假设您在linux上):
ffscu2ro13#
虽然可以使用
INSERT OVERWRITE
要从配置单元中获取数据,它可能不是针对特定情况的最佳方法。首先让我解释一下INSERT OVERWRITE
是的,那么我将描述从配置单元表获取tsv文件的方法。根据手册,您的查询将把数据存储在hdfs的一个目录中。格式将不是csv。
写入文件系统的数据被序列化为文本,列之间用^a分隔,行之间用换行符分隔。如果任何列不是基元类型,那么这些列将序列化为json格式。
轻微的修改(添加
LOCAL
关键字)将数据存储在本地目录中。当我运行一个类似的查询时,输出是这样的。
就我个人而言,我通常通过命令行上的配置单元直接运行我的查询,并将其导入本地文件,如下所示:
这给了我一个标签分隔的文件,我可以使用。希望这对你也有用。
基于这个补丁-3682,我怀疑在使用hive0.11时有更好的解决方案,但我自己无法测试。新语法应该允许以下内容。
希望有帮助。
yshpjwxd14#
我正在寻找一个类似的解决方案,但是这里提到的那些方案不起作用。我的数据有各种各样的空格(空格、换行符、制表符)字符和逗号。
为了使列数据tsv安全,我用空格替换了列数据中的所有\t字符,并在命令行上执行python代码以生成csv文件,如下所示:
这创建了一个完全有效的csv。希望这能帮助那些来寻找这个解决方案的人。
rjee0c1515#
您应该使用createtableasselect(ctas)语句在hdfs中创建一个目录,其中包含查询结果的文件。之后,您将不得不导出这些文件从hdfs到您的常规磁盘,并合并成一个单一的文件。
您可能还需要做一些技巧来将文件从“\001”分隔转换为csv。您可以使用自定义csv serde或对提取的文件进行后处理。