如何在分隔的键值对上创建外部配置单元(&D)

xqnpmsa8  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(255)

我有一个简单的需求,就是在一个文本文件上创建一个“hiveexternaltable”,该文件的数据格式为
colaaa=2&colddd=1065985&colbbb=valuebb&colccc=875列名称=value&col名称=value&col名称=value&col名称=value
我不能使用regex serde,因为列名没有按定义的顺序排列。有没有一种方法可以在不写新customserde的情况下创建外部表??
如果不存在,则创建外部表自定义表名称(colaaa int、colbbb int、colccc string、colddd int)行格式分隔字段,以“&”结束?????????????如何使其读取键值??
我想避免编写customserde,除非没有可用的开源serde。。。谢谢。

wztqucjr

wztqucjr1#

首先,创建带有一个Map列的外部表来解析数据

create external table some_table
(map_col map<string, string>)
row format 
   COLLECTION ITEMS TERMINATED BY '&'
   MAP KEYS TERMINATED BY '='
stored as textfile
location <your_location>

然后选择您感兴趣的Map键

create table another_table as
select map_col['colAAA'] as colAAA, ...etc
  from some_table

相关问题