pyspark之DataFrame學習【dataFrame查詢】(3)
阿新 • • 發佈:2019-02-05
在檢視dataFrame的資訊時,可以通過collect()、show()、或者take()、來檢視DataFrame中的資料(show()和take()包含了限制返回行數的選項)
1.檢視行數
可以使用count()方法檢視DataFrame的行數
from pyspark.sql import SparkSession spark= SparkSession\ .builder \ .appName("dataFrame") \ .getOrCreate()# # 匯入型別 from pyspark.sql.types import3* #生成以逗號分隔的資料 stringCSVRDD = spark.sparkContext.parallelize([ (123,"Katie",19,"brown"), (234,"Michael",22,"green"), (345,"Simone",23,"blue") ]) #指定模式,StructField(name,dataType,nullable)其中name:該欄位的名字,dataType:該欄位的資料型別,nullable:指示該欄位的值是否為空 schema = StructType([ StructField("id",LongType(),True), StructField("name",StringType(),True), StructField("age",LongType(),True), StructField("eyeColor",StringType(),True) ]) #對RDD應用該模式並且建立DataFrame swimmers = spark.createDataFrame(stringCSVRDD,schema) #利用DataFrame建立一個臨時檢視 swimmers.registerTempTable("swimmers") #檢視DataFrame的行數 print swimmers.count()
2.篩選語句
使用filter字句執行篩選語句
#獲取age=22的id swimmers.select("id","age").filter("age=22").show()+---+---+
| id|age|
+---+---+
|234| 22|
+---+---+
上述查詢的另一種寫法
swimmers.select(swimmers.id,swimmers.age).filter(swimmers.age==22).show()+---+---+
| id|age|
+---+---+
|234| 22|
+---+---+
如果只想得到眼睛顏色是以字母b開頭的人的名字,則可使用like
#獲得eyeColor like 'b%'的(name)名字,(eyeColor)眼睛顏色 swimmers.select("name","eyeColor").filter("eyeColor like 'b%'").show()+------+--------+
| name|eyeColor|
+------+--------+
| Katie| brown|
|Simone| blue|
+------+--------+
3.利用SQL查詢
可以執行SQL查詢是因為對swimmers資料執行了.registerTempTable方法
查詢行數
# swimmers.select("name","eyeColor").filter("eyeColor like 'b%'").show() spark.sql("select count(1) from swimmers").show()
+--------+
|count(1)|
+--------+
| 3|
+--------+
#用SQL獲得age=22的id,age spark.sql("select id,age from swimmers where age=22").show()+---+---+
| id|age|
+---+---+
|234| 22|
+---+---+
如果只是想要取回眼睛顏色以字母b開頭的人的名字,則可以使用like
spark.sql("select name,eyeColor from swimmers where eyeColor like 'b%'").show()
+------+--------+| name|eyeColor|
+------+--------+
| Katie| brown|
|Simone| blue|
+------+--------+