用spark进行数据查询常用语法总结


在工作中用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()
  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值