我正在把数据框保存到Parquet文件中。生成的架构如下所示:
org.apache.spark.sql.parquet.row.metadata{
"type":"struct",
"fields":[
{
"name":"DCN",
"type":"string",
"nullable":true,
"metadata":{}
},
{
"name":"EDW_id",
"type":"string",
"nullable":true,
"metadata":{}
},
{
"name":"recievedTimestamp",
"type":"string",
"nullable":true,
"metadata":{}
},
{
"name":"recievedDate",
"type":"date",
"nullable":true,
"metadata":{}
},
{
"name":"rule",
"type":"string",
"nullable":true,
"metadata":{}
}
]}
Dataframe正在spark程序中生成;当我通过spark submit运行它并显示Dataframe时,我可以看到有几百条记录。我将df保存到Parquet地板上,如下所示:
df.write.format("parquet").mode(SaveMode.Overwrite).save('/home/my/location')
在配置单元中创建一个外部表,如下所示:
CREATE EXTERNAL TABLE schemaname.tablename (
DCN STRING,
EDW_ID STRING,
RECIEVEDTIMESTAMP STRING,
RECIEVEDDATE STRING,
RULE STRING)
STORED AS PARQUET
LOCATION '/home/my/location';
该表已成功创建,但未填充任何数据-当我查询它时,返回0条记录。有人能看出我做错了什么吗?这是使用Hive1.1和Spark1.6。
2条答案
按热度按时间yhqotfr81#
配置单元需要jar文件来处理Parquet文件。
1.首先下载parquet-hive-bundle-1.5.0.jar
2.将jar路径包含到hive-site.xml中。
5cnsuln72#
配置单元元数据存储区不区分大小写,并以小写形式存储所有列名,其中as parquet按原样存储。尝试在相同的情况下重新创建配置单元表。