我想通过 sparksql 删除一个配置单元表。
在安装了 hadoop 2.6、hive 2.0、spark 1.6 和 spark 2.0 的集群中。我在两个版本的 pyspark shell 和 spark-submit 作业中尝试了以下代码。
sqlContext.sql('drop table test')  //spark 1.6
spark.sql('drop table test')       //spark 2.0
两个代码在 pyspark-shell 中都可以正常工作,我可以从 hive cli 中看到测试表不再存在。
但是,如果代码在 python 文件中,然后使用 spark-submit 提交到集群,则代码永远不会生效。
spark 2.0 甚至给出了错误
pyspark.sql.utils.AnalysisException: u"Table to drop '`try`' does not exist;"
我已将hive-site.xml复制到 spark 中的 conf 目录中。
通过 sparksql 删除配置单元表的正确方法是什么?
更新:
我尝试比较了 spark-shell 和我使用以下代码提交的作业之间的 spark 环境
spark-submit --master yarn --deploy-mode cluster try_spark_sql.py
在spark-shell环境下,可以看到spark.sql.catalogImplementation 设置为hive
在使用上述代码提交的作业中。环境不包含spark.sql.catalogImplementation 我尝试使用以下代码设置它: …
我有工作在hadoop集群之间传输hive表.我所做的是从源hadoop集群下载orc文件,然后使用以下命令将orc文件上载到目标hdfs集群.
hadoop fs -get 
hadoop fs -put
目标hadoop clustr中的orc文件可以通过以下方式在spark应用程序中读取:
df = sqlContext.sql('select * from orc.`path_to_where_orc_file_is`') 
但是,目标hadoop集群中的配置单元中没有相应的表.
有没有办法在hdfs中从orc文件创建表而不指定ddl或schema?由于orc文件本身包含架构信息.
我问这个问题的原因是因为原始hive表的模式是完全嵌套的并且有很多字段.
目前我能想到的唯一解决方案是在spark中读取那些orc文件,并使用saveAsTable选项将它们写出来,如下所示:
dfTable.write.format("orc").mode(SaveMode.Overwrite).saveAsTable("db1.test1")
我有一个配置了hadoop 2.7.2和hive 2.1.0的hadoop集群.
我使用beeline使用以下命令连接到hive:
beeline
beeline> !connect jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000:
首先,键入任何用户名都可以成功连接到配置单元.但是,配置以下设置后,将显示错误.
//within hive-site.xml and hiveserver2-site.xml
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
<description>
  Setting this property to true will have HiveServer2 execute
  Hive operations as the user making the calls to it.
</description>
</property>
//within core-site.xml
<property>
<name>hadoop.proxyuser.hive.hosts</name>
<value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hive.groups</name>
  <value>*</value>
</property>
我已重新启动hadoop群集,但仍会显示以下消息:
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hive is not allowed to impersonate hive (state=,code=0)
hiveserver2的调试输出如下:
    16/11/15 11:28:46 [IPC Client (241742811) connection to /10.104.90.40:8020 from …