我们正尝试使用saveAsTable()
方法将Dataframe保存到Hive表。但是,我们得到以下例外。我们正在尝试将数据存储为TextInputFormat
。
Exception in thread "main" org.apache.spark.sql.AnalysisException: Saving data in the Hive serde table `cdx_network`.`inv_devices_incr` is not supported yet. Please use the insertInto() API as an alternative..;
reducedFN.write().mode(SaveMode.Append).saveAsTable("cdx_network.alert_pas_incr");
我尝试insertInto()
和enableHiveSupport()
并且它有效。但是,我想使用saveAsTable()
。
我想了解为什么saveAsTable()
不起作用。我尝试浏览文档和代码。没有得到太多的了解。它应该是有效的。我看到使用Parquet格式的人提出的问题,但对于TextFileInputFormat,我没有看到任何问题。
表格定义
CREATE TABLE `cdx_network.alert_pas_incr`(
`alertid` string,
`alerttype` string,
`alert_pas_documentid` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'maprfs:/apps/cdx-dev/alert_pas_incr'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\"}',
'numFiles'='0',
'numRows'='0',
'rawDataSize'='0',
'totalSize'='0',
'transient_lastDdlTime'='1524121971')