如何在Spark 2.0中使用SQL获取正确的子字符串

Dea*_*hen 4 apache-spark

例如,如果我有一个字符串列值(例如“ 2.450”),我想从该列中获取正确的2个字符“ 50”,如何使用Spark 2.0.1中的sql来获取它我在从dataframe创建的视图上运行sql

mydf.createOrReplaceTempView("myview");
Run Code Online (Sandbox Code Playgroud)

Dea*_*hen 5

我看到有人说应该参考HQL文档,然后我尝试使用带有负参数的子字符串,它起作用。这很简单,但是使事情变得复杂的原因是spark sql没有文档。我认为这不是一个好主意,对于许多想使用spark sql的人来说,它不是一个好主意。

scala> val df = spark.sql("select a, substring(a,-2) as v from cdr");
df: org.apache.spark.sql.DataFrame = [a: string, v: string]

scala> df.show()
+-----------+---+
|a          |  v|
+-----------+---+
|      4.531| 31|
|      4.531| 31|
|      1.531| 31|
|      1.531| 31|
|      1.531| 31|
|      1.531| 31|
|      1.531| 31|
|      3.531| 31|
|      1.531| 31|
|      1.531| 31|
|      1.531| 31|
|      1.431| 31|
|      1.531| 31|
|      1.633| 33|
|      1.531| 31|
|      3.531| 31|
|      1.531| 31|
|      3.531| 31|
|      1.531| 31|
|      4.531| 31|
+-----------+---+
only showing top 20 rows
Run Code Online (Sandbox Code Playgroud)