我遇到了一個有趣的問題。我有一個調用Python UDF的HIVE腳本來操縱一些日期。 Python的輸出是6列,3個是字符串,3個是數組。爆炸HIVE中的字符串
例如print '%s\t%s\t%s\t%s\t%s\t%s\t%s' % (ID1, ID2, ID3, ARR1, ARR2, ARR3)
這裏是我的Python UDF的輸出中的一行:
10161 10400511433810000 (0000010161, 10400511433810001) ["0011583180","0011583180","0011583180"] ['2004-04-16', '2004-04-16', '2004-04-16'] ['2004-09-03', '2004-09-03', '2004-09-03']
# 問題1: 我使用%s
因爲我無法找到一個方法來返回數組的方式來HIVE HIVE會將它們讀作陣列。
因此,我在HIVE中創建了一個表格,它甚至將數組作爲字符串輸入,假定我可以將字符串拆分爲數組。腳本我用:
insert overwrite table table2
SELECT
ID1,
ID2,
ID3,
SPLIT(ARR1, '\\\t') as ARR1,
SPLIT(ARR2, '\\\t') as ARR2,
SPLIT(ARR3, '\\\t') as ARR3
FROM table1
LIMIT 10;
# PROBLEM2:我得到以下輸出:
0000010167 10400514362740001 (0000010167, 10400514362740001) ["[\"0022136941\",\"0022315161\"]"] ["['1900-01-01', '2007-05-01']"] ["['1900-01-01', '2008-06-16']"]
我實際上需要的是:
0000010167 10400514362740001 (0000010167, 10400514362740001) 0022136941 1900-01-01 1900-01-01
0000010167 10400514362740001 (0000010167, 10400514362740001) 0022315161 2007-05-01 2008-06-16