PySpark: Fresher Flashcards
https://www.interviewbit.com/pyspark-interview-questions/
PySparkとは何ですか?
PySpark は、Python の Apache Spark インターフェイスです。Python で書かれた API を使用して Spark と連携するために使用されます。また、Spark DataFrame、Spark SQL、Spark Streaming、Spark MLlib、Spark Core などの Spark の機能もサポートしています。
PySpark の特徴は何ですか? (4)
1) 抽象化されたノード:これは、個々のワーカー ノードをアドレス指定できないことを意味します。
2) Spark API: PySpark は、Spark 機能を利用するための API を提供します。
3) Map-Reduce モデル: PySpark は Hadoop の Map-Reduce モデルに基づいています。これは、プログラマーがマップおよびリデュース機能を提供することを意味します。
4) 抽象化されたネットワーク: PySpark ではネットワークが抽象化されており、可能な通信は暗黙的な通信のみであることを意味します。
PySpark の長所と短所は何ですか?
a) 長所 (5)
b) 短所 (4)
[長所]
- 長所1: 使い方が簡単: 並列化されたコードをより簡単な方法で作成できます。
- 長所2: エラー処理: PySpark フレームワークはエラーを簡単に処理します。
- 長所3: 組み込みアルゴリズム: PySpark は、機械学習またはグラフで多くの便利なアルゴリズムを提供します。
- 長所4: ライブラリのサポート: Scala と比較して、Python にはデータ サイエンスやデータ視覚化の分野で作業するための膨大なライブラリ コレクションがあります。
- 長所5: 学習が簡単: PySpark は学習が簡単な言語です。
[短所]
- 短所1: MapReduce モデルを使用して問題を表現することが困難になる場合があります。
- 短所2: Spark は元々 Scala で開発されたため、Python プログラムで PySpark を使用すると効率が比較的低く、Scala プログラムよりも約 10 倍遅くなります。これは、大量のデータ処理アプリケーションのパフォーマンスに影響を与える可能性があります。
- 短所3: PySpark の Spark Streaming API は、Scala と比較すると成熟していません。まだまだ改善が必要です。
- 短所4: PySpark は、提供されている抽象化のため、Spark の内部関数の変更には使用できません。このような場合には、Scala が推奨されます。
PySpark SparkContext とは何ですか?
PySpark SparkContext は、Spark 機能の最初のエントリ ポイントです。これは Spark クラスター接続も表し、Spark RDD (Resilient Distributed Datasets) の作成とクラスター上での変数のブロードキャストに使用できます。
https://d3n0h9tb65y8q.cloudfront.net/public_assets/assets/000/001/793/original/PySpark_SparkContext.png
PySpark SparkFiles を使用する理由は何ですか?
PySpark の SparkFiles は、Spark アプリケーションにファイルをロードするために使用されます。この機能は SparkContext の下に存在し;
- sc.addFile():
Spark にファイルをロードするためのメソッドを使用して呼び出すことができます。SparkFiles は、メソッドを使用してパスを取得するためにも使用できます - SparkFiles.get():
このメソッドを使用して追加されたファイルへのパスを解決するためにも使用できます - sc.addFile()
a) PySpark シリアライザーとは何ですか?
b) 何種類ありますか?
シリアル化プロセスは、Spark のパフォーマンス チューニングを行うために使用されます。ネットワークを介してディスクまたはメモリに送受信されるデータは永続化される必要があります。PySpark は、この目的のためにシリアライザーをサポートしています。次の 2 種類のシリアライザーをサポートしています。
PickleSerializer: Python の PickleSerializer ( class pyspark.PickleSerializer) を使用してオブジェクトをシリアル化します。これは、ほぼすべての Python オブジェクトをサポートします。
MarshalSerializer:オブジェクトのシリアル化を実行します。を使用することで使用できますclass pyspark.MarshalSerializer。このシリアライザーは PickleSerializer よりも高速ですが、サポートされる型は限られています
a) PySpark の RDD とは何ですか?
b) どのような操作がありますか?(2)
RDD は、復元力のある分散データセットに拡張されます。これらは、クラスター上で並列処理を実行するために複数のノードで実行および操作するために使用される要素です。RDD は並列処理に適しているため、不変の要素です。これは、RDD を作成した後は変更できないことを意味します。
操作には次の 2 種類があります。
1) 変換
2) アクション
PySpark は機械学習 API を提供しますか? (5)
1) mllib.classification− これは、ランダム フォレスト、デシジョン ツリー、ナイーブ ベイズなどのバイナリまたはマルチクラスの分類および回帰分析
2) mllib.clustering- これは、類似性に応じてエンティティのサブセットを互いにグループ化
3) mllib.fpm− FPM は、Frequent Pattern Matching の略です。このライブラリは、大規模なデータセットの分析に使用される頻繁な項目、サブシーケンス、またはその他の構造をマイニングするために使用されます。
4) mllib.linalg− 線形代数の問題を解くために使用されます。
5) mllib.recommendation− これは、協調フィルタリングおよびレコメンダー システムで使用されます。
spark.mllib− これは、モデルベースの協調フィルタリングをサポートするために使用されます。この場合、欠落エントリの予測に使用される交互最小二乗法 (ALS) アルゴリズムを使用して小さな潜在要因が識別されます。
mllib.regression- これは、関係と変数の依存関係を見つける回帰アルゴリズムを使用して問題を解決するために使用されます。
PySpark でサポートされいるさまざまなクラスター マネージャーのタイプは何ですか? (5)
1) スタンドアロン– これは、Spark に含まれる単純なクラスター マネージャーです。
2) Apache Mesos – このマネージャーは Hadoop MapReduce および PySpark アプリを実行できます。
3) Hadoop YARN – このマネージャーは Hadoop2 で使用されます。
4) Kubernetes
5) ローカル
PySpark RDD の利点は何ですか? (5)
1) インメモリ処理: PySpark の RDD は、ディスクからメモリへのデータのロードに役立ちます。RDD は、計算を再利用するためにメモリ内に永続化することもできます。
2) 不変性: RDD は不変です。これは、RDD が一度作成されると変更できないことを意味します。RDD に変換操作を適用すると、新しい RDD が作成されます。
3) フォールト トレランス: RDD はフォールト トレラントです。これは、操作が失敗するたびに、データが他の使用可能なパーティションから自動的に再ロードされることを意味します。これにより、PySpark アプリケーションがシームレスに実行されます。
4) 遅延進化: PySpark 変換操作は、検出されてすぐには実行されません。操作は DAG に保存され、最初の RDD アクションが見つかると評価されます。
5) パーティショニング: RDD がデータから作成されるたびに、RDD 内の要素はデフォルトで使用可能なコアにパーティショニングされます。
PySpark はPandaより速いですか?
PySpark は、分散環境、つまり Pandas に存在しない異なるコアや異なるマシンでのステートメントの並列実行をサポートします。これが、PySpark がパンダよりも高速である理由です。
PySpark DataFrame について何を理解していますか? (2)
1) テーブル構造
PySpark DataFrame は、リレーショナル データベースのテーブルに相当する、よく整理されたデータの分散コレクションであり、名前付き列に配置されます。PySpark DataFrame は、R や Python と比較して最適化が優れています。これらは、以下の図に示すように、Hive テーブル、構造化データ ファイル、既存の RDD、外部データベースなどのさまざまなソースから作成できます。
2) 分散処理
PySpark DataFrame 内のデータはクラスター内のさまざまなマシンに分散されており、これに対して実行される操作はすべてのマシンで並行して実行されます。これらは、ペタバイト規模の構造化データまたは半構造化データの大規模なコレクションを処理できます。
Pyspark の SparkSession とは何ですか?
RDD、DataFrame、Datasets などに関連するすべての PySpark 機能にアクセスするための開始点として機能します。これは、SQLContext、StreamingContext、HiveContext、およびその他すべてのコンテキストを置き換える際に使用される統合 API でもあります。
PySpark の共有変数にはどのような種類がありますか?また、それらが役立つのはなぜですか?
PySpark が filter()、map()、または Reduce() を使用して変換操作を実行したときは異なるタスク間で共有することもできません。
共有するためにPySpark には共有変数が2つあります。
1) ブロードキャスト変数:これらは読み取り専用共有変数とも呼ばれ、データ ルックアップ要件の場合に使用されます。
2) アキュムレータ変数:これらの変数は、更新可能な共有変数と呼ばれます。
15.PySpark UDF (User Defined Function) とは何ですか?
ユーザーによって定義された関数であり、カスタム ロジックをユーザー環境で再利用できます。 Databricks では、拡張可能なロジックを分散できるように、さまざまな種類がサポートされています。
https://docs.databricks.com/ja/udf/index.html