我正在尝试通过使用spark-sql读取数据帧后以镶木地板文件格式创建配置单元表。表已在配置单元中以序列文件格式而不是镶木地板文件格式创建。但是在表路径中我可以看到创建了实木复合地板文件。我无法从蜂巢中查询此文件。 我用过的代码。
df.write.option("path","/user/hive/warehouse/test/normal").format("parquet").mode("Overwrite").saveAsTable("test.people")
我正在使用spark 2.3和hive 2.3.3以及MapR Distribution
显示创建表格人员:
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'path'='maprfs:///user/hive/warehouse/test.db/people')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
答案 0 :(得分:1)
LazySimpleSerDe用于CSV,TSV和自定义分隔文件
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'path'='maprfs:///user/hive/warehouse/test.db/people')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
对于实木复合地板,您必须使用其他Serde或指定存储为实木复合地板。
STORED AS PARQUET
LOCATION ''
tblproperties ("parquet.compress"="SNAPPY");
由于您使用的是Spark,如果配置单元表已存在,则它将不会仅触摸元数据信息更新的数据。从技术上讲,它不会删除并重新创建表。仅当表不存在时,它才会创建表。