Способ создания внешней таблицы кустов из файла OR C - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать таблицу внешних кустов для файла OR C.

Запрос, использованный для создания таблицы:

create external table fact_scanv_dly_stg (
store_nbr int,
geo_region_cd char(2),
scan_id int,
scan_type char(2),
debt_nbr string,
mds_fam_id string,
upc_nbr string,
sales_unit_qty string,
sales_amt string,
cost_amt string,
visit_dt string,
rtn_amt string,
crncy_cd string,
op_cmpny_cd string)
STORED AS ORC
location 'hdfs:///my/location/scanv_data/'; 

Сведения о схеме файла OR C (( Взято из DataFrame Spark- SQL):

 |-- _col0: integer (nullable = true)
 |-- _col1: string (nullable = true)
 |-- _col2: integer (nullable = true)
 |-- _col3: byte (nullable = true)
 |-- _col4: short (nullable = true)
 |-- _col5: integer (nullable = true)
 |-- _col6: decimal(18,0) (nullable = true)
 |-- _col7: decimal(9,2) (nullable = true)
 |-- _col8: decimal(9,2) (nullable = true)
 |-- _col9: decimal(9,2) (nullable = true)
 |-- _col10: date (nullable = true)
 |-- _col11: decimal(9,2) (nullable = true)
 |-- _col12: string (nullable = true)
 |-- _col13: string (nullable = true)

Но когда я пытаюсь сделать, выберите на созданной таблице ошибку ниже:

select * from fact_scanv_dly_stg limit 5;


OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.io.ByteWritable cannot 
be cast to org.apache.hadoop.hive.serde2.io.HiveCharWritable

Любые предложения, пожалуйста ??

1 Ответ

1 голос
/ 30 апреля 2020

Эта ошибка возникает из-за того, что при записи данных из файлов spark в файлы OR C тип данных столбцов также сохраняется, и, следовательно, при создании таблицы кустов необходимо сопоставить каждый столбец с их типом данных, аналогичным схеме данных.

Здесь эта ошибка произошла из-за того, что ваш столбец _col3 в схеме spark был байтовым, а вы указали его в виде строки в кусте. Решением будет либо привести все столбцы к требуемому типу данных в spark, а затем записать файлы OR C или сопоставить точный тип данных в схеме улья как spark.

...