如何使用pyspark连接到Hive?

pdtvr36n  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(449)

我正在尝试在配置单元中创建一个表。但它正在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)")
5hcedyr0

5hcedyr01#

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|
+--------+---------+-------+
ttvkxqim

ttvkxqim2#

当您在配置单元中创建一个表时,场景后面发生的事情是,它将元数据存储在某个关系数据库中,具体取决于为您的环境配置的关系数据库,并且实际数据将存储在hdfs仓库目录中(如果该目录是托管表)。
类似地,当您尝试从配置单元中的spark创建表时,它将首先创建folder.db,然后在此文件夹中创建另一个具有表名的文件夹,该文件夹将数据存储在hdfs上。
所以在你的情况下,你应该 <warehouse_dir>/testdb.db/table 文件夹。如果您将任何数据加载到此表中,这些数据将出现在表文件夹中。
希望有帮助。
当做,
尼拉吉

相关问题