sparkのcollect()関数

779 ワード

  • sparkのcollect操作は、リモートデータをネットワークを介してローカルに転送することであり、データ量が特に大きいと、ネットワーク圧力が大きくなり、driver側のメモリオーバーフローが深刻な問題となる.
  • foreachは、リモートクラスタ上のRDD内を順次巡回する要素である.collect()とforeachの違いはPythonのrange関数とxrange関数に少し似ています.

  • code1
    tb = hiveContext.sql("select * from tb")
    type(tb)    pyspark.sql.dataframe.DataFrame
    type(tb.columns)   list;
    

    code2
    tb1 = hiveContext.sql("select * from tb1").collect()
    type(tb1)     list;
    

    リストになったら、その中の各データをループすることができます.
    code3
    tb2 = hiveContext.sql("select * from tb2").toPandas()
    type(tb2)     pandas.core.frame.DataFrame
    type(tb2.columns)     pandas.indexes.base.Index
    type(tb2.index)     pandas.indexes.range.RangeIndex
    

    終わります.