如何使用pyspark连接到hive?

如何使用pyspark连接到hive?,hive,pyspark,pyspark-sql,Hive,Pyspark,Pyspark Sql,我正在尝试在配置单元中创建一个表。但它正在spark warehouse文件夹中创建一个类似testdb.db的文件夹。当我们存储到MySQL/MongoDB数据库时,如何直接存储在HIVE中 conf = SparkConf().setAppName("data_import") sc = SparkContext(conf = conf) sqlContext = HiveContext(sc) sqlContext.setConf("spark.sql.shuffle.partitio

我正在尝试在配置单元中创建一个表。但它正在spark warehouse文件夹中创建一个类似testdb.db的文件夹。当我们存储到MySQL/MongoDB数据库时,如何直接存储在HIVE中

conf = SparkConf().setAppName("data_import")
sc = SparkContext(conf = conf)

sqlContext = HiveContext(sc)

sqlContext.setConf("spark.sql.shuffle.partitions", "2")
sqlContext.sql("CREATE DATABASE testdb")
sqlContext.sql("use testdb")
sqlContext.sql("create table daily_revenue(order_date string, daily_revenue float)")

当您在配置单元中创建一个表时,幕后发生的事情是,它将元数据存储在一些关系数据库中,具体取决于为您的环境配置的关系数据库,并且实际数据将存储在HDFS仓库目录(如果该目录是托管表)

同样,当您尝试从配置单元中的Spark创建表时,它将首先创建文件夹.db,然后在此文件夹中创建另一个具有表名的文件夹,该文件夹将数据存储在HDFS上

因此,在您的情况下,应该有
/testdb.db/table
文件夹。及 如果将任何数据加载到此表中,这些数据将显示在表文件夹中

希望能有帮助

问候,


Neeraj

不要使用testdb,试着将您的
create
作为
testdb的前缀。每日收入
是。我可以看到这个/testdb.db/table。但我在HDFS中看不到这一点。是否需要更改任何配置文件?您已回答了hive CLI的问题。我问过如何使用pyspark连接到hive warehouse。您何时将
sqlContext
更改为hive CLI?你试过Pyspark shell的答案吗?
sqlContext.sql("create database if not exists demo")

>>> sqlContext.sql("show tables in demo").show()
+---------+-----------+
|tableName|isTemporary|
+---------+-----------+
+---------+-----------+

sqlContext.sql("create table demo.dummy (id int, name string)")

>>> sqlContext.sql("show tables in demo").show()
+---------+-----------+
|tableName|isTemporary|
+---------+-----------+
|    dummy|      false|
+---------+-----------+

>>> sqlContext.sql("desc demo.dummy").show()
+--------+---------+-------+
|col_name|data_type|comment|
+--------+---------+-------+
|      id|      int|   null|
|    name|   string|   null|
+--------+---------+-------+