如何将新数据插入现有表格?
我正在尝试使用pyspark将新数据插入到现有表中。
这是我的程序
from pyspark import SparkContext
from pyspark.sql import SQLContext, DataFrameWriter
sc = SparkContext("local[*]", "SPARK-SQL")
sqlContext = SQLContext(sc)
df = sqlContext.read.json("people.json")
df.registerTempTable("people")
# Show old data
result = sqlContext.sql("SELECT * from people")
result.show()
# Create new data
new_data = [{"name": "Phan", "age": 22}]
df_new_data = sqlContext.createDataFrame(new_data)
# Save data to table 'people'
df_new_data.write.mode("append").saveAsTable("people")
# Show new data
result = sqlContext.sql("SELECT * from people")
result.show()
运行后。表“ people”中的数据无法更改。
Old data
+---+--------+
|age| name|
+---+--------+
| 30| Michael|
| 30| Andy|
| 19| Justin|
| 21|PhanHien|
+---+--------+
New data
+---+--------+
|age| name|
+---+--------+
| 30| Michael|
| 30| Andy|
| 19| Justin|
| 21|PhanHien|
+---+--------+
请帮助我更改表中的数据!!! 谢谢!
答案 0 :(得分:0)
>>> df_new_data.write.mode("append").saveAsTable("people")
上面的代码将 people 表写入配置单元中的默认数据库中。
因此,如果要查看配置单元表中的数据,则需要创建 HiveContext ,然后查看配置单元表而不是临时表中的结果。
>>> hc=HiveContext(sc)
>>> hc.sql("select * from default.people").show(100,False)
更新:
将新数据追加到临时表:
>>> df1=df
>>> df2=df.unionAll(df1)
>>> df2.registerTempTable("people")
>>> sqlContext.sql("select * from people").show(100,False)
答案 1 :(得分:0)
我尝试使用表名不存在的saveAsTable。
df_new_data.write.mode("append").saveAsTable("people1")
# Show new data
result = sqlContext.sql("SELECT * from people1")
result.show()
有效。而且我可以在表“ people1”
中看到新数据+---+----+
|age|name|
+---+----+
|22 |Phan|
+---+----+