例如如果我有一个像“2.450”这样的字符串列值,我想从该列中获得正确的 2 个字符“50”,如何使用 spark 2.0.1 中的 sql 获取它
我正在从数据帧创建的 View 上运行我的 sql

mydf.createOrReplaceTempView("myview");

最佳答案

我看到有人说应该引用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

关于apache-spark - 如何在spark 2.0中使用sql获取正确的子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40113033/

10-10 19:29