3のpyspark系統的な研究 - DATAFRAME

        データフレームは、リレーショナルデータベースのテーブルに類似不変分散データセット、指定された列に編成されたデータのセットです。セット上の分散データ構造を適用することによって、そうデータユーザはSQLにスパークスパーク問い合わせまたは(むしろラムダより)構造車両スパーク表現方法を利用すること。

RDDに1.python間の通信

たび実行PySparkは、潜在的に仕事を行うために巨大なオーバーヘッドを必要とするように、RDDを使用しています。フィギュア

PySparkドライブ、開始Py4j JavaSparkContext JVMを使用して、スパークコンテキストで。当初のJavaにマップされたすべてのRDD変換はPythonRDD内のオブジェクト。

これらのタスクが動作ノードスパークためにプッシュしたら、PythonRDDオブジェクトは、子プロセス(サブプロセス)にパイプ(管)プロモーターのPythonを使用し、Pythonで処理するコードデータを送信します。この方法は、Pythonのサブプロセスに複数のノードを動作させる複数の分散データ処理PySparkを可能にするが、Pythonと通信オーバーヘッドとコンテキスト切り替えの間の多くのJVMがあるが。

2触媒オプティマイザリフレッシュ

一つのスパークSQLエンジンはすぐに主な理由として、触媒オプティマイザあるためです。触媒即時意義に対処するため、オプティマイザがクエリに関連している,,スパークエンジン最適化触媒コンパイルされ、最適化された論理的な計画にするだけでなく、示すように、最も効果的な物理的な計画のコスト最適化を確保するための世代:

最適化は、次の2つの目的のためにプログラムし、設計された機能的な構造に基づいています:技術的機能の最適化を容易にする新しい注文を追加するために、開発者が外部オプティマイザを(特定のルールは、データソースを追加する新しいデータ型スパークSQLをサポートするために拡張できるようにしますなど)。

3加速度Pysparkデータフレームを使用して

データフレームとRDD前センスに対する触媒オプティマイザ(タングステンプロジェクト)と最適化されていないクエリは、クエリパフォーマンスがスカラに遅いRDDの共通のクエリを使用するよりもデータフレーム、Pythonのクエリ速度のPySpark導入を増大比較します。典型的には、このクエリのパフォーマンスによるPythonとJVMの間の減少の通信オーバーヘッド。

Python DataFrame和SQL、Scala DataFrame以及R DataFrame都能够利用Catalyst优化器:

4 创建DataFrame

通常情况下,通过使用SparkSession导入数据(或者调用PySpark地shell脚本spark)来创建DataFrame。

4.1 生成JSON数据

stringJSONRDD = sc.parallelize((""" 
  { "id": "123",
    "name": "Katie",
    "age": 19,
    "eyeColor": "brown"
  }""",
   """{
    "id": "234",
    "name": "Michael",
    "age": 22,
    "eyeColor": "green"
  }""", 
  """{
    "id": "345",
    "name": "Simone",
    "age": 23,
    "eyeColor": "blue"
  }""")
)
stringJSONRDD.collect()

[out]:[' \n  { "id": "123",\n    "name": "Katie",\n    "age": 19,\n    "eyeColor": "brown"\n  }',
 '{\n    "id": "234",\n    "name": "Michael",\n    "age": 22,\n    "eyeColor": "green"\n  }',
 '{\n    "id": "345",\n    "name": "Simone",\n    "age": 23,\n    "eyeColor": "blue"\n  }']

利用SparkSession read.json方法,RDD将会被转换成一个DataFrame(即spark.read.json())。

4.2 创建一个DataFrame

swimmersJSON = spark.read.json(stringJSONRDD)
swimmersJSON.show()

+---+--------+---+-------+
|age|eyeColor| id|   name|
+---+--------+---+-------+
| 19|   brown|123|  Katie|
| 22|   green|234|Michael|
| 23|    blue|345| Simone|
+---+--------+---+-------+

DataFrame的转换和动作与RDD的转换和动作类似,还有一套缓慢的(转换)操作。但是,对比RDD,DataFrame操作并不是缓慢的,主要是源于Catalyst优化器。

5 简单的DataFrame查询

发布了20 篇原创文章 · 获赞 3 · 访问量 454

おすすめ

転載: blog.csdn.net/u011740601/article/details/104069591