我们可以使用哪种字符和格式为Hive表指定分隔符?

时间:2018-12-09 21:13:51

标签: hive delimiter

我正在使用Sqoop将数据从Mysql导入到Hive。

但是,我在定界符方面遇到了一些问题。实际上,我知道我可以通过为Hive表使用正确的定界符来解决我的问题,因此它将很好地读取我提供给它的文件。

但是,我搜索了几个小时,仍然找不到可以用作字段分隔符的字符的任何文档?!

能否请您帮我找到我可以用作字段分隔符的哪种字符?以及用于指定它的格式/编码?

在有关融合的Hive官方文档中,我只能发现:

    row_format
  : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
        [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
  | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]

但是,“字符”代表什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

[由字符终止的字段[由字符终止的字符]] 在此字符中,任何字符。最常用的是逗号(,),如CSV文件(逗号分隔的文件)

但是我不明白,如果您要从MySQL压缩数据,为什么还要关心Field Separator?

要么以 ORC格式创建表,然后将数据压缩到其中。或者,您也可以在导入数据的同时创建表。

mysql_connection="jdbc:mysql://server/db_name"

sqoop import \
--connect $mysql_connection \
--username=mysql_username \
--password=mysql_password \
--table batch_control_execution \
--hcatalog-database temp \
--hcatalog-table mysql_batch_control \
-m 1

将以下选项添加到创建表格

--create-hcatalog-table 

然后将以下选项添加到指定格式。

--hcatalog-storage-stanza \
'stored as orc tblproperties ("orc.compress"="SNAPPY")'