hive - 使用 serdeproperties 的配置单元会出错
问题描述
我正在尝试创建 hive 表,以便 hdfs 文件系统具有 UTF-8 格式,问题是查询给出错误,不确定我做错了什么。
DROP TABLE IF EXISTS output_2057565014;
CREATE TABLE temp.output_2057565014
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 'ธ'
COLLECTION ITEMS TERMINATED BY '|'
MAP KEYS TERMINATED BY '$'
with serdeproperties('serialization.encoding'='UTF-8')
LOCATION '/tmp/test-2057565014'
AS
SELECT * from temp.abc
解决方案
“查询给出错误” > 是的,但是什么样的?也许阅读该错误消息会有所帮助。没有它,这只是猜测。
所以,让我们猜测一下。
ROW FORMAT DELIMITED
子句隐含地假定分隔符是单个 ASCII-7 字符,或者显式定义(当可打印时)或由它们的八进制代码定义。
因此FIELDS TERMINATED BY 'ธ'
无效。
您可以尝试不同的变通方法——在上游文件创建过程中更改分隔符;在加载到 HDFS 之前就地更改分隔符(例如,使用一个好的旧sed
命令);尝试使用RegExSerde进行硬编码列映射(参见“行格式和 SerDe”下的语言手册 DLL / CREATE TABLE )...
推荐阅读
- c# - 其中 Generic T 是抽象类的实现
- python-3.x - 合并和计算字典中的总和
- c - C中的非函数do while循环
- python-3.x - Lambda 函数在 Python 3.x 中返回错误值
- r - 如何使用 R 中的 dplyr 只保留那些一起包含最长连续运行的变量加一的行?
- flutter - 在颤动中传递选定索引的更好方法
- controller - G-code G1 移动指令与 MM114 获取电机位置指令不一致
- asp.net - 如何通过 VB.Net 中的 Drive API 将文件上传到 Google 共享驱动器?
- c# - 对从 ICollection 对象创建的 List<> 执行操作 - ICollection 对象正在更改
- javascript - 拖动链接的图像(不触发链接)