Ada*_*ith 1 sql apache-spark-sql
我有一个包含几行的文件。例如
A B C
awer.ttp.net Code 554
abcd.ttp.net Code 747
asdf.ttp.net Part 554
xyz.ttp.net Part 747
Run Code Online (Sandbox Code Playgroud)
我想要创建一个 SparkSQL 语句来仅拆分表的 a 列,并且希望向表 D 添加一个新行,其值为 awe、abcd、asdf 和 xyz。
您可以使用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")
Run Code Online (Sandbox Code Playgroud)
输出:
+------------+----+---+----+
|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 |
+------------+----+---+----+
Run Code Online (Sandbox Code Playgroud)