我试图在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)
答案 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|
+--------+---------+-------+