Spark DataFrame に定数列を追加するにはどうすればよいですか?

DDD
リリース: 2024-11-08 20:22:02
オリジナル
440 人が閲覧しました

How do I add constant columns to Spark DataFrames?

Spark DataFrame への定数列の追加

Spark DataFrame を使用する場合、次のような定数列を追加する必要があるシナリオがあります。各行に固定値を設定します。ただし、よくある間違いは、計算列の追加を目的とした withColumn を直接使用することです。

withColumn でのエラー

を使用して定数列を直接追加しようとすると、 withColumn を使用すると、次のようなエラーが発生します。

AttributeError: 'int' object has no attribute 'alias'
ログイン後にコピー

これは、withColumn が 2 番目の引数として計算式を表す Column オブジェクトを予期しているためです。整数などの定数値は列ではありません。

解決策

定数列を正しく追加するには、関数 lit を使用してリテラル値を作成します。この関数は定数値を引数として受け取り、Column オブジェクトを返します。

from pyspark.sql.functions import lit
ログイン後にコピー
df.withColumn('new_column', lit(10))
ログイン後にコピー

Complex Columns

配列などのより複雑な定数値の場合または構造体の場合は、次の関数を使用できます:

  • array
  • struct
  • create_map

例:

from pyspark.sql.functions import array, struct, create_map

df.withColumn("some_array", array(lit(1), lit(2), lit(3)))
df.withColumn("some_struct", struct(lit("foo"), lit(1), lit(.3)))
df.withColumn("some_map", create_map(lit("key1"), lit(1), lit("key2"), lit(2)))
ログイン後にコピー

代替アプローチ

Spark バージョン 2.2 以降では、typedLit 関数を使用して、シーケンスなどのサポートされるデータ型の定数列を作成することもできます。

もう 1 つの代替方法は UDF を使用することですが、これは上記の組み込み関数を使用するよりも遅くなります。

以上がSpark DataFrame に定数列を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート