1. 程式人生 > >pyspark之DataFrame學習【dataFrame查詢】(3)

pyspark之DataFrame學習【dataFrame查詢】(3)

在檢視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 import 
* #生成以逗號分隔的資料 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()
3

2.篩選語句

使用filter字句執行篩選語句

#獲取age=22id
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|
+--------+

利用where字句執行篩選語句
#SQL獲得age=22idage
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|
+------+--------+