分享

spark saveAsTable 将DF数据写入hive表之后,在hive客户端查询不到,在Spark-sql可以

spark运行结果通过saveAsTable写入表中之后,在spark-sql可以正常查询,在hive客户端select返回为空,查看desc formatted tablename; 其中的Detailed Table Information 中的Location显示的不是hdfs的路径,很奇怪,这个需要怎样修改呢
hive> desc formatted pca_svm_result;
OK
# col_name                    data_type                   comment            
                  
label                       double                                          
prediction                  double                                          
                  
# Detailed Table Information                  
Database:                   default                      
Owner:                      hadoop                       
CreateTime:                 Mon Sep 03 15:45:05 CST 2018         
LastAccessTime:             UNKNOWN                      
Retention:                  0                            
Location:                   file:/mnt/hadoop/hadoop-2.6.5/hdfs/tmp/nm-local-dir/usercache/hadoop/appcache/application_1534325481078_0318/container_1534325481078_0318_01_000001/spark-warehouse/pca_svm_result         
Table Type:                 MANAGED_TABLE                
Table Parameters:                  
        spark.sql.create.version        2.3.0               
        spark.sql.sources.provider        parquet            
        spark.sql.sources.schema.numParts        1                  
        spark.sql.sources.schema.part.0        {\"type\":\"struct\",\"fields\":[{\"name\":\"label\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}},{\"name\":\"prediction\",\"type\":\"double\",\"nullable\":true,\"metadata\":{}}]}
        transient_lastDdlTime        1535960705         
                  
# 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:                  
        path                        hdfs://master:9000/user/hive/warehouse/pca_svm_result
        serialization.format        1                  
Time taken: 0.073 seconds, Fetched: 31 row(s)

已有(15)人评论

跳转到指定楼层
sstutu 发表于 2018-9-3 16:40:30
spark sql可能写入本地表了。看下spark sql是否连接到了hive表。

回复

使用道具 举报

ltne 发表于 2018-9-3 16:58:25
sstutu 发表于 2018-9-3 16:40
spark sql可能写入本地表了。看下spark sql是否连接到了hive表。

感觉不像是写入本地表,因为spark-sql是可以查询出数据的,只是hive客户端查询不出数据
回复

使用道具 举报

ltne 发表于 2018-9-3 17:00:16
sstutu 发表于 2018-9-3 16:40
spark sql可能写入本地表了。看下spark sql是否连接到了hive表。

desc formatted 查询出 Detailed Table Information 中的location的信息不是hdfs,这个很奇怪,感觉就是这个的问题,不知道哪里可以配置
回复

使用道具 举报

sstutu 发表于 2018-9-3 17:21:40
ltne 发表于 2018-9-3 16:58
感觉不像是写入本地表,因为spark-sql是可以查询出数据的,只是hive客户端查询不出数据

可以在核实下。正因为这样,所以spark查询的是本地,hive查询的元数据库。二者查询的位置不一样,所以造成这个情况。所以先看看数据在什么地方。hive查询的是hdfs,自然找不到了。
回复

使用道具 举报

ltne 发表于 2018-9-3 17:39:29
sstutu 发表于 2018-9-3 17:21
可以在核实下。正因为这样,所以spark查询的是本地,hive查询的元数据库。二者查询的位置不一样,所以造 ...

数据是保存在hdfs上的,问题出在hive查询的时候是去查询的本地,所以查询不到,上面的信息是在hive客户端出来的,其中的Location显示的是本地的任务文件夹,应该是这个问题,但是不知道该怎么修改,表是通过DF.saveAsTable 直接生成的
回复

使用道具 举报

ltne 发表于 2018-9-4 13:17:44
还是没找到具体解决方法,求助大家
回复

使用道具 举报

阿飞 发表于 2018-9-4 15:46:51
ltne 发表于 2018-9-4 13:17
还是没找到具体解决方法,求助大家

可能跟配置文件有关系,把你的本地客户端的配置文件贴出来。
回复

使用道具 举报

ltne 发表于 2018-9-5 09:20:57
本帖最后由 ltne 于 2018-9-5 10:40 编辑
阿飞 发表于 2018-9-4 15:46
可能跟配置文件有关系,把你的本地客户端的配置文件贴出来。

hive-site
<configuration>
        <property>
                 <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive/warehouse</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://master:3306/hive</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>(mysql的驱动)
                <value>com.mysql.jdbc.Driver</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionUserName</name>(用户名)
                <value>hadoop</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionPassword</name>(密码)
                <value>aims2016</value>
        </property>

        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>
        <property>  
                  <name>hive.metastore.local</name>  
                  <value>false</value>  
        </property>
        <property>
                <name>hive.server2.authentication</name>
                <value>NONE</value>
        </property>
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>0.0.0.0</value>
                 <description>Bind host on which to run the HiveServer2 Thrift interface.
                  Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
        </property>
</configuration>

其他都是默认配置

回复

使用道具 举报

ltne 发表于 2018-9-5 14:40:25
我安装的spark是直接官网编译好的,是不是这个导致的,是需要重新编译spark才可以支持hive吗
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条