パンダと比較してデータフレームをスパーク

  パンダ スパーク
仕事 単一工作機械シングル、何の並列処理の並列性が存在しない
のHadoopをサポートしていない、大規模なデータのボトルネック
分散コンピューティングフレームワークを平行、並列並列は、クラスタノード間で分散自動並列のすべてのデータおよび操作を内蔵しました。メモリ内のデータに対する分散データ処理を処理します。
Hadoopのためのサポートは、大量のデータを扱うことができます
遅延機構 レイジー評価されていません レイジーに評価
メモリキャッシュ スタンドアロンキャッシュ 持続()またはキャッシュ()メモリに格納されたRDDSを変換
データフレームの変動 パンダは、データフレームで可変です スパークRDDSは不変であるため、変更可能なデータフレームではありません
作ります spark_dfから変換:pandas_df = spark_df.toPandas() pandas_dfから変換:spark_df = SQLContext.createDataFrame(pandas_df)
また、createDataFrameは、リスト要素がタプル、辞書、RDDとすることができるリスト変換spark_df、から支持しました
リスト、辞書、ndarray変換 既存のRDDSの変換
読書CSVデータセット 構造化データファイルの読み込み
HDF5読み取り データセットは、JSONを読みます
EXCEL読みます ハイブテーブル読み出し
  外部データベースを読み込みます
インデックスindex 自動的に作成 いいえインデックスインデックスは、追加の列の必要性を作成する必要がない場合
ライン構造 パンダデータフレームに属するシリーズ構造、構造 行構造、構造属するスパークDATAFRAME
カラム構造 パンダデータフレームに属するシリーズ構造、構造 データフレーム[名:文字列]のようなスパークデータフレーム構造を、属する列の構造、
列名 名前の重複を許可しません 重複した名前が許可
メソッドの別名を使用して列を変更します
列の追加 DF [「XX」] = 0 df.withColumn(「XX」、0).SHOW()会报错
pyspark.sqlインポート機能から
df.withColumn(「XX」、functions.lit(0))。(表示)
[変更]列 その存在DF [ "XX"]カラム、DF [ "XX"] = 1 その存在DF [ "XX"]カラム、df.withColumn( "XX"、1).SHOW()
ディスプレイ   DFは出力しない具体的な内容、出力方法を表示することにより、特定のコンテンツ行い
、出力形式:データフレームを[年齢:BIGINT、名前 :文字列]
DF出力の特定のコンテンツ df.show()出力の詳細
出力の形式でませツリー構造ません df.printSchema():ツリープリント要約の形で
  df.collect()
シーケンス df.sort_index()軸でソート  
df.sort()は、列の値によってソートされ df.sort()は、列の値によってソートされ
選択またはスライス df.name出力特定のコンテンツ DF []は、表示出力方法と、特定のコンテンツの出力の特定のコンテンツない
DF [「名前」]は出力固有のコンテンツ、出力方法を示しによって特定のコンテンツありません
DF []出力特定のコンテンツ、
DF [「名前」]出力の詳細
df.select()1つ以上の列を選択します
( "名前")をdf.select
スライスdf.select(DF [ '名前'] 、DF [ '年齢'] + 1)
DF [0]
df.ix [0]
df.first()
df.head(2) df.head(2)またはdf.take(2)
df.tail(2)  
スライスdf.ix [3]又はdf.ix [ "XX"]またはDF [ "XX"]  
df.loc []タブで選択されています  
df.iloc []の位置によって選択されます  
濾過 df[df[‘age’]>21] df.filter(df[‘age’]>21) 或者 df.where(df[‘age’]>21)
整合 df.groupby(“age”)
df.groupby(“A”).avg(“B”)
df.groupBy(“age”)
df.groupBy(“A”).avg(“B”).show() 应用单个函数
from pyspark.sql import functions
df.groupBy(“A”).agg(functions.avg(“B”), functions.min(“B”), functions.max(“B”)).show() 应用多个函数
统计 df.count() 输出每一列的非空行数 df.count() 输出总行数
df.describe() 描述某些列的count, mean, std, min, 25%, 50%, 75%, max df.describe() 描述某些列的count, mean, stddev, min, max
合并 Pandas下有concat方法,支持轴向合并  
Pandas下有merge方法,支持多列合并
同名列自动添加后缀,对应键仅保留一份副本
Spark下有join方法即df.join()
同名列不自动添加后缀,只有键值完全匹配才保留一份副本
df.join() 支持多列合并  
df.append() 支持多行合并  
缺失数据处理 对缺失数据自动添加NaNs 不自动添加NaNs,且不抛出错误
fillna函数:df.fillna() fillna函数:df.na.fill()
dropna函数:df.dropna() dropna函数:df.na.drop()
SQL语句 import sqlite3
pd.read_sql(“SELECT name, age FROM people WHERE age >= 13 AND age <= 19”)
表格注册:把DataFrame结构注册成SQL语句使用类型
df.registerTempTable(“people”) 或者 sqlContext.registerDataFrameAsTable(df, “people”)
sqlContext.sql(“SELECT name, age FROM people WHERE age >= 13 AND age <= 19”)
功能注册:把函数注册成SQL语句使用类型
sqlContext.registerFunction(“stringLengthString”, lambda x: len(x))
sqlContext.sql(“SELECT stringLengthString(‘test’)”)
两者互相转换 pandas_df = spark_df.toPandas() spark_df = sqlContext.createDataFrame(pandas_df)
函数应用 df.apply(f)将df的每一列应用函数f df.foreach(f) 或者 df.rdd.foreach(f) 将df的每一列应用函数f
df.foreachPartition(f) 或者 df.rdd.foreachPartition(f) 将df的每一块应用函数f
map-reduce操作 map(func, list),reduce(func, list) 返回类型seq df.map(func),df.reduce(func) 返回类型seqRDDs
diff操作 有diff操作,处理时间序列数据(Pandas会对比当前行与上一行) 没有diff操作(Spark的上下行是相互独立,分布式存储的)
发布了131 篇原创文章 · 获赞 7 · 访问量 3万+

おすすめ

転載: blog.csdn.net/weixin_43064185/article/details/103909256