繁体   English   中英

pyspark sql 查询等效函数

[英]pyspark sql query equivalent functions

我刚刚开始深入研究 Pyspark。

这个数据集包含一些值,我将在下面演示以询问我无法创建的查询。

图像数据集

这是包含大约 20K 行的实际数据集的示例。 我正在阅读 pyspark shell 中的 CSV 文件作为数据框。 尝试转换一些基本的 SQL 查询以获取此数据。 以下是我无法查询的一个此类查询:

1. Which country has the least number of Government Type (4th Column).

还有其他一些我自己手动创建的查询,我可以在 SQL 中完成,但我只是理解这个问题。 如果我对此有所了解,那么解决其他问题将是相当相关的。

这是我经过多次窃听后唯一可以创建的行:

df.filter(df.Government=='Democratic').select('Country').show()

我不确定如何处理这个问题陈述。 有任何想法吗?

这是你如何做到的

Demography = Row("City", "Country", "Population", "Government")

demo1 = Demography("a","AD",1.2,"Democratic")
demo2 = Demography("b","AD",1.2,"Democratic")
demo3 = Demography("c","AD",1.2,"Democratic")
demo4 = Demography("m","XX",1.2,"Democratic")
demo5 = Demography("n","XX",1.2,"Democratic")
demo6 = Demography("o","XX",1.2,"Democratic")
demo7 = Demography("q","XX",1.2,"Democratic")

demographic_data = [demo1,demo2,demo3,demo4,demo5,demo6,demo7]

demographic_data_df = spark.createDataFrame(demographic_data)
demographic_data_df.show(10)

+----+-------+----------+----------+
|City|Country|Population|Government|
+----+-------+----------+----------+
|   a|     AD|       1.2|Democratic|
|   b|     AD|       1.2|Democratic|
|   c|     AD|       1.2|Democratic|
|   m|     XX|       1.2|Democratic|
|   n|     XX|       1.2|Democratic|
|   o|     XX|       1.2|Democratic|
|   q|     XX|       1.2|Democratic|
+----+-------+----------+----------+

new = demographic_data_df.groupBy('Country').count().select('Country', f.col('count').alias('n'))

max = new.agg(f.max('n').alias('n'))

new.join(max , on = "n",
    how = "inner").show()

+---+-------+                                                                   
|  n|Country|
+---+-------+
|  4|     XX|
+---+-------+

另一种选择是将 dataframe 注册为临时表并运行正常的 SQL 查询。 要将其注册为临时表,您可以执行以下操作

demographic_data_df.registerTempTable("demographic_data_table")

希望有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM