在工作中用spark对数据查询,所使用的常用语法进行整理归纳如下:

show:数据显示

data = spark.sql("""select * from temp.tables""")
data.show(3)

# 转成pandas方式
# df = data.toPandas()
# df.head(3)

distinct:数据行数去重

data = spark.sql("""select * from temp.tables""").distinct()
data.show(3)

#or

data = spark.sql("""select * from temp.tables""")
data  = data.distinct()
data.show(3)

count:看行数

data = spark.sql("""select * from temp.tables""")
data.count()

select:查看具体列数据

data = data.select('dt', 'order_money')
data.show(3)

toDF:对字段命名(搭配常用与groupby–agg–toDF)

data = spark.sql("""select * from temp.tables""")
df = data.group('dt').agg(fn.countDistinct('user_id'), fn.sum('order_money')).toDF('dt', 'user_uv_count', 'order_money_sum')
df.show(3)

withColumn:新增列名

df = df.withColumn('avg_money', (df.order_money_sum / df.user_uv_count).cast('decimal(14,4)'))
df.show(3)

printSchema: 打印列名信息

df.printSchema()

dropDuplicates:数据列数去重

data = spark.sql("""select * from temp.tables""")
data.dropDuplicates(['city']).show()

limit:数据看前N条

data = spark.sql("""select * from temp.tables""").limit(10)
data.show(3)

collect:所有数据收集到数组

data = spark.sql("""select * from temp.tables""")
data.collect().show(3)

head==take:查看前N行数据

data = spark.sql("""select * from temp.tables""").head(5)
data.show(3)

data = spark.sql("""select * from temp.tables""").take(5)
data.show(3)

sample:随机采样,fraction按比例采样

data = spark.sql("""select * from temp.tables""")
data = data.sample(fraction=0.5)
data.show(3)

selectExpr:选择列名字段,更改列名调整小数位

data = spark.sql("""select * from temp.tables""")
data = data.select('dt', 'order_money')
data.selectExpr('dt as date', 'coalesce(order_money, 4)')
data.show(3)

unionByName: 两两之间相同列名进行合并

data = spark.sql("""select * from temp.tables""")
data2 = spark.sql("""select * from temp.tables2""")
union_data = data.unionByName(data2)
union_data.show(6)

describe:查看数据个数、均值、标准差、最小、最大值

data = spark.sql("""select * from temp.tables""")
data.describe().show()

summary:查看数据个数、均值、标准差、最小、25%、50%、75%、最大值

比describe多个四分位数(25%、50%、75%)

data = spark.sql("""select * from temp.tables""")
data.summary().show()
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐