SparkSQLリファレンス第三部、関数編・変換関数です。
SparkSQLの構文は構文編、演算子は演算子編をご覧ください。
変換関数
型の変換を行う関数です。
関数 | 内容 | ver. |
---|---|---|
ascii |
ascii(e: Column) 先頭単語のasciiコードを数値型(Int)で返却します。 sql: select ascii( e ) as n from ... DataFrame: df.select( ascii( $"e" ) as $"n" ) 例) eが”apple”だとしたら97が返ります。 |
1.5.0 |
cast |
cast(d: DataType) カラムを異なるデータ型へ変換します。 SQL文の場合とDataFrameの場合で型の指定の仕方が異なります。 SQLの場合はSQL99で定義される定義型、DataFrameの場合はSparkSQLが定義する定義型(IntegerType等)を使います。 sql: select cast( c as STRING ) as n from ... DataFrame: df.select( $"c" cast StringType as "n" ) |
1.3.0 |
decode |
decode(value: Column, charset: String) バイナリ型を指定されたcharsetで文字列にデコードします。 charsetに指定できるのは、’US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’。 sql: select decode( bins, 'UTF-8' ) from ... DataFrame: df.select( decode( $"bins", "UTF-8" ) ) |
1.5.0 |
encode |
encode(value: Column, charset: String) decodeの逆で、文字列を指定されたcharsetでバイナリにエンコードします。 charsetに指定できるのは、’US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’。 sql: select encode( bins, 'UTF-8' ) from ... DataFrame: df.select( encode( $"bins", "UTF-8" ) ) |
1.5.0 |
format_number |
format_number(x: Column, d: Int) 数値型の少数点をフォーマットした文字列を返却します。 第1引数に数値型カラム、 第2引数に小数点の位を設定します。 sql: select format_number( x, 2 ) from ... DataFrame: df.select( format_number( $"x", 2 ) ) 例) “128.56” |
1.5.0 |
format_string |
format_string(format: String, arguments: Column*) 引数をprintf形式でフォーマットした文字列を返却します。 第1引数にフォーマット文字列、 第2引数〜フォーマット対象カラムを指定します。 sql: select format_string( '%s: %02d', name, age ) from ... DataFrame: df.select( format_string( '%s: %02d', $"name", $"age" ) ) 例) name=”nami”, age=”9″の場合 “nami: 09″が返ります。 |
1.5.0 |
to_date |
to_date(e: Column) 文字列型をDate型に変換します。 書式は日付形式かタイムスタンプ形式で指定します。
sql: select to_date( '2015-10-20 10:20:56' ) from ... DataFrame: df.select( to_date( '2015-10-20 10:20:56' ) ) |
1.5.0 |
DataTypeは現在下記のようなものが用意されています。
UserDefinedTypeを使えばユーザ定義型を作成することもできます。
型 | SQL | 内容 |
---|---|---|
ArrayType | array | 配列型 |
BinaryType | binary | バイナリ型 |
BooleanType | boolean | 真偽型 |
ByteType | tinyint | バイト型 |
DateType | date | 日付型 |
DecimalType | decimal | 数値型(高精度) |
DoubleType | double | 倍精度浮動小数点型 |
FloatType | float | 単精度浮動小数点数型 |
IntegerType | int | integer | 整数型(4byte) |
LongType | bigint | long | 長整数型(8byte) |
MapType | map | Map型 |
ShortType | smallint | 整数型(2byte) |
StringType | varchar | string | 文字列型 |
StructType | struct | 構造型 |
TimestampType | timestamp | タイムスタンプ型 |
UserDefinedType | – | ユーザ定義型 |
構文
演算子
関数
宜しければこちらの動画もどうぞー
Sparkのインストールからspark-shellでのword-countまで行っています。
https://www.youtube.com/watch?v=Dci8Vig3PKw
pysparkをJupyterで使っています。
https://www.youtube.com/watch?v=D-aotRlBrvw