如何将 Pandas 数据框发送到 hive 表?
我知道如果我有一个 spark 数据框,我可以使用它将它注册到一个临时表中
df.registerTempTable("table_name")
sqlContext.sql("create table table_name2 as select * from table_name")
但是当我尝试使用 pandas dataFrame 来 registerTempTable 时,我收到以下错误:
AttributeError: 'DataFrame' object has no attribute 'registerTempTable'
有没有办法让我使用 Pandas 数据帧来注册临时表或将其转换为 Spark 数据帧,然后使用它注册临时表,以便我可以将其发送回配置单元。
最佳答案
我猜你正在尝试使用 pandas df
而不是 Spark's DF .
Pandas DataFrame 没有 registerTempTable
这样的方法.
您可以尝试从 pandas DF 创建 Spark DF。
更新:
我已经在 Cloudera 下对其进行了测试(安装了 Anaconda parcel ,其中包括 Pandas 模块)。
确保您已设置 PYSPARK_PYTHON
到所有 Spark 工作人员(通常位于:spark-conf/spark-env.sh
)上的 anaconda python 安装(或另一个包含 Pandas 模块的安装)
这是我的测试结果:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randint(0,100,size=(10, 3)), columns=list('ABC'))
>>> sdf = sqlContext.createDataFrame(df)
>>> sdf.show()
+---+---+---+
| A| B| C|
+---+---+---+
| 98| 33| 75|
| 91| 57| 80|
| 20| 87| 85|
| 20| 61| 37|
| 96| 64| 60|
| 79| 45| 82|
| 82| 16| 22|
| 77| 34| 65|
| 74| 18| 17|
| 71| 57| 60|
+---+---+---+
>>> sdf.printSchema()
root
|-- A: long (nullable = true)
|-- B: long (nullable = true)
|-- C: long (nullable = true)
关于python-2.7 - pyspark中的 Pandas 数据框到 hive ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36919825/