Указанные столбцы разделов не соответствуют столбцам разделов таблицы. Пожалуйста, используйте () в качестве столбцов разделов
Здесь я пытаюсь сохранить фрейм данных в многораздельной таблице ульев и получаю это глупое исключение. Я смотрел на это много раз, но не смог найти ошибку.
org.apache.spark.sql.AnalysisException: указанные столбцы разделов (значение метки времени) не соответствуют столбцам разделов таблицы. Пожалуйста, используйте () в качестве столбцов раздела.;
Вот скрипт, с помощью которого создается внешняя таблица,
CREATE EXTERNAL TABLEIF NOT EXISTS events2 (
action string
,device_os_ver string
,device_type string
,event_name string
,item_name string
,lat DOUBLE
,lon DOUBLE
,memberid BIGINT
,productupccd BIGINT
,tenantid BIGINT
) partitioned BY (timestamp_val DATE)
row format serde 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
stored AS inputformat 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
outputformat 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
location 'maprfs:///location/of/events2'
tblproperties ('serialization.null.format' = '');
Вот результат описания отформатированной таблицы "events2"
hive> describe formatted events2;
OK
# col_name data_type comment
action string
device_os_ver string
device_type string
event_name string
item_name string
lat double
lon double
memberid bigint
productupccd bigint
tenantid bigint
# Partition Information
# col_name data_type comment
timestamp_val date
# Detailed Table Information
Database: default
CreateTime: Wed Jan 11 16:58:55 IST 2017
LastAccessTime: UNKNOWN
Protect Mode: None
Retention: 0
Location: maprfs:/location/of/events2
Table Type: EXTERNAL_TABLE
Table Parameters:
EXTERNAL TRUE
serialization.null.format
transient_lastDdlTime 1484134135
# Storage Information
SerDe Library: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Compressed: No
Num Buckets: -1
Bucket Columns: []
Sort Columns: []
Storage Desc Params:
serialization.format 1
Time taken: 0.078 seconds, Fetched: 42 row(s)
Вот строка кода, где данные разделены и сохранены в таблице,
val tablepath = Map("path" -> "maprfs:///location/of/events2")
AppendDF.write.format("parquet").partitionBy("Timestamp_val").options(tablepath).mode(org.apache.spark.sql.SaveMode.Append).saveAsTable("events2")
При запуске приложения я получаю ниже
Указанные столбцы разделов (timestamp_val) не соответствуют столбцам разделов таблицы. Пожалуйста, используйте () в качестве столбцов разделов.
Я мог бы совершить очевидную ошибку, любая помощь высоко ценится с upvote:)
1 ответ
Пожалуйста, напечатайте схему df:
AppendDF.printSchema()
Убедитесь, что это не несоответствие типов??