あなたはsplit
機能を使用して、ここで新しい列D
のための最初の要素を取得することができますすることは簡単な例です
val spark = SparkSession.builder().master("local").getOrCreate()
import spark.implicits._
val data = spark.sparkContext.parallelize(Seq(
("awer.ttp.net","Code", 554),
("abcd.ttp.net","Code", 747),
("asdf.ttp.net","Part", 554),
("xyz.ttp.net","Part", 747)
)).toDF("A","B","C")
data.withColumn("D", split($"A", "\\.")(0)).show(false)
//using SQL
data.createOrReplaceTempView("tempTable")
data.sqlContext.sql("SELECT A, B, C, SUBSTRING_INDEX(A, '.', 1) as D from tempTable")
出力:
+------------+----+---+----+
|A |B |C |D |
+------------+----+---+----+
|awer.ttp.net|Code|554|awer|
|abcd.ttp.net|Code|747|abcd|
|asdf.ttp.net|Part|554|asdf|
|xyz.ttp.net |Part|747|xyz |
+------------+----+---+----+
私はSparkSQLコマンドを探しています、 Scalaコマンドではありません –
コードがSQLでうまくいきました。これはうまくいきます。 –
これは多くのためにSQL文を探しています大きいファイル。ファイルはすでにsparkにロードされています。だから私は何かに等しいデータを設定することはできません。だから私たちは、データと呼ばれるスパーク・テーブルへの参照を持っており、それはスパーク時に誘惑的であることを指しています。だから私はSQLコマンドがほしいだけです。私は「A、B、C、SUBSTRING_INDEX(A、 '。'、1)をtempTableからDとして選択しようとしましたが、動作しませんでした。 –