如何使用pyspark连接到配置单元?

时间:2018-01-22 13:05:02

标签: hive pyspark pyspark-sql

我试图在HIVE中创建一个表。但它正在spark-warehouse文件夹中创建一个像testdb.db这样的文件夹。当我们存储到MySQL / MongoDB数据库时,如何直接存储在HIVE中。

from itertools import groupby
from operator import itemgetter

groups = groupby(values, itemgetter('id'))
new_list = []
for k,g in groups:
    z = {}
    for x in g:
        z = {**z,**x}
    new_list.append(z)
print(new_list)

2 个答案:

答案 0 :(得分:2)

当你在HIVE中创建一个表时,场景背后会发生的事情是,它根据为你的环境配置的数据库将元数据存储在某个关系数据库中,如果是托管表,实际数据将存储在HDFS仓库目录中。

同样当你尝试从HIV中的Spark创建表时,它会做什么,首先它将创建文件夹.db并在此文件夹中创建另一个带有表名的文件夹,该文件夹将数据存储在HDFS上

因此,在您的情况下,您应该有<warehouse_dir>/testdb.db/table个文件夹。和 如果你加载任何数据到这个表,它将出现在表文件夹中。

希望它有所帮助。

此致

Neeraj

答案 1 :(得分:-1)

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