Pandas中dataframe以及spark中rdd使用groupByKey進行合並


 18.11.15更新,因為代碼用set的話集群跑不了,所以更改為一直用dataframe進行操作,發現Pandas和spark中對dataframe的操作不同,所以增加了pandas的group操作

 

  最近進行關聯規則算法的學習,使用的是tpch里的數據,取了customer和part兩行數據如圖

  而關聯規則算法要求的數據格式為{customer|part1,part2,part3……},因此要根據customer號進行合並,由於使用的是spark讀取tpch的數據,所以讀取出來是rdd或者dataframe的形式,所以要使用rdd自帶的方法groupByKey。

  首先讀取數據得到rdd1

  

    hive_context = HiveContext(spark)
    hive_context.sql('use tpch')

    customerPartDf = hive_context.sql(" SELECT c.C_CUSTKEY customer,i.L_PARTKEY part \
    FROM customer c,orders o,lineitem i WHERE c.C_CUSTKEY=o.O_CUSTKEY and o.O_ORDERKEY=i.L_ORDERKEY")

    customerPartDf.show()
    customerPartDf1=customerPartDf.rd

  然后直接使用groupByKey方法得到rdd2

  

customerPartDf2 = customerPartDf1.groupByKey()

  這時候其實已經完成了group操作,但是使用時發現顯示有錯誤

customerPartDf2.show()

  這是因為並沒有直接對rdd進行group操作,而是做了一個操作標記,所以並未直接顯示操作結果,但在后面的操作中可以發現group成功

customerPartDf3 = customerPartDf2.mapValues(list)
    print(customerPartDf3.collect())

  可以看到group操作成功

  轉換成dataframe的效果是

   

  標題欄又消失了,不過下面的算法暫時用不到,所以先放,遇到的時候再研究

 

  另外一開始用的是reduceByKey,后來發現好像是計數功能

 

 

  Pandasgroup操作:https://blog.csdn.net/youngbit007/article/details/54288603

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM