2017-02-22 25 views
1
jan 18 "value1 is null" 
feb 4 "value1 is null" 

в приведенных выше наборе данных есть последовательные разделители между 1-м и 2-м столбцом в втором ряду, как обрабатывать последовательные разделители как один разделитель.улой таблица свойства рассматривать последовательные разделители как один разделитель

+0

пример не ясно –

+0

'18 января "value1 равно нулю" \ п 4 февраля "value1 является нулевым"' –

+0

я могу видеть пример, но Я не вижу 2 столбца, и я не вижу разделителя. Я могу догадаться, что вам нужен CSV serde для того, чтобы рассматривать значение «value1 равно null» как единое значение. –

ответ

0
create external table mydata 
(
    c1 string 
    ,c2 string 
    ,c3 string 
) 
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe' 
with serdeproperties ('input.regex' = '(".*?"|.*?)\\s+(".*?"|.*?)\\s+(".*?"|.*?)') 
location '/user/hive/warehouse/mydata' 
; 

select * from mydata; 

+-----------+-----------+------------------+ 
| mydata.c1 | mydata.c2 | mydata.c3  | 
+-----------+-----------+------------------+ 
| jan  |  18 | "value1 is null" | 
| feb  |   4 | "value1 is null" | 
+-----------+-----------+------------------+ 
+0

спасибо другу. это единственный способ или с помощью «org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe» мы можем его получить. потому что у меня есть 75 столбцов в моем наборе данных. –

+0

MultiDelimitSerDe, похоже, обрабатывает только ограничитель фиксированной длины. –

+0

ho ok. Тогда я пойду с первым решением. большое спасибо ..... –