我新的火花,剛剛開始一個在線pyspark教程。我上傳的json數據DataBrick和寫的命令如下:
df = sqlContext。sql (“SELECT * FROM people_json”)
df.printSchema ()
從pyspark.sql。導入類型*
data_schema = [StructField(“年齡”,IntegerType(),真的),StructField(“名字”,StringType(),真的))
final_struc = StructType(字段= data_schema)
# # #教程說運行此命令
df = spark.read.json (people_json,模式= final_struc)
# # #但這不是工作。為什麼這是不工作嗎?什麼工作?謝謝!
第一部分你的查詢
df = sqlContext。sql (“SELECT * FROM people_json”) df.printSchema ()
是創建
df
DataFrame通過閱讀現有的表。
你的第二部分查詢使用
spark.read.json
這是期待一個文件。例如,下麵的代碼做的工作:
從pyspark.sql。導入類型*data_schema = [StructField('age', IntegerType(), True), StructField('name', StringType(), True)] final_struc = StructType(fields=data_schema) df = spark.read.json("/my/directory/people.json", schema=final_struc) df.show()
輸出是:
+ - - - + - - - - - - - +歲| | |名稱+ - - - + - - - - - - - +零Michael | | | | | 30安迪| | 19 |賈斯汀| + - - - + - - - - - - - +
如果你想改變表的模式基於你的第一個查詢,你可以
1。執行SQL,如火花
df.createOrReplaceTempView (df) df2 =火花。sql(“選擇演員(int)歲年齡、投(名稱字符串)的名字從df”)
2。使用PySpark DataFrame列/模式
從pyspark.sql。類型進口IntegerType df2 = df。withColumn(“時代”,df(“年齡”).cast (IntegerType ()))
HTH !
第一部分你的查詢
df = sqlContext。sql (“SELECT * FROM people_json”) df.printSchema ()
是創建
df
DataFrame通過閱讀現有的表。
你的第二部分查詢使用
spark.read.json
這是期待一個文件。例如,下麵的代碼做的工作:
從pyspark.sql。導入類型*data_schema = [StructField('age', IntegerType(), True), StructField('name', StringType(), True)] final_struc = StructType(fields=data_schema) df = spark.read.json("/my/directory/people.json", schema=final_struc) df.show()
輸出是:
+ - - - + - - - - - - - +歲| | |名稱+ - - - + - - - - - - - +零Michael | | | | | 30安迪| | 19 |賈斯汀| + - - - + - - - - - - - +
如果你想改變表的模式基於你的第一個查詢,你可以
1。執行SQL,如火花
df.createOrReplaceTempView (df) df2 =火花。sql(“選擇演員(int)歲年齡、投(名稱字符串)的名字從df”)
2。使用PySpark DataFrame列/模式
從pyspark.sql。類型進口IntegerType df2 = df。withColumn(“時代”,df(“年齡”).cast (IntegerType ()))
HTH !