Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Apache Spark:列名中的非标准字符_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala Apache Spark:列名中的非标准字符

Scala Apache Spark:列名中的非标准字符,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我打以下电话: propertiesDF.select( col("timestamp"), col("coordinates")(0) as "lon", col("coordinates")(1) as "lat", col("properties.tide (above mllw)") as "tideAboveMllw", col("properties.wind speed") as "windSpeed") 这

我打以下电话:

  propertiesDF.select(
        col("timestamp"), col("coordinates")(0) as "lon", 
        col("coordinates")(1) as "lat", 
        col("properties.tide (above mllw)") as "tideAboveMllw",
        col("properties.wind speed") as "windSpeed")
这给了我以下错误:

org.apache.spark.sql.AnalysisException:没有这样的结构字段 (高于mllw)在空气温度、大气压力、露点、, 主导波周期、平均波方向、名称、程序名称、, 有效波高、潮汐(mllw以上):能见度、水 温度、风向、风速

现在肯定有这样一个结构域。(错误消息本身就是这样说的。)

以下是模式:

 root
 |-- timestamp: long (nullable = true)
 |-- coordinates: array (nullable = true)
 |    |-- element: double (containsNull = true)
 |-- properties: struct (nullable = true)
 |    |-- air temperature: double (nullable = true)
 |    |-- atmospheric pressure: double (nullable = true)
 |    |-- dew point: double (nullable = true)
          .
          .
          .
 |    |-- tide (above mllw):: string (nullable = true)
          .
          .
          .
输入读取为JSON,如下所示:

val df = sqlContext.read.json(dirName)
如何处理列名中的括号?

基于此,您可以尝试使用单引号。像这样:

 propertiesDF.select(
        col("timestamp"), col("coordinates")(0) as "lon", 
        col("coordinates")(1) as "lat", 
        col("'properties.tide (above mllw)'") as "tideAboveMllw",
        col("properties.wind speed") as "windSpeed")
基于此,您可以尝试使用单引号。像这样:

 propertiesDF.select(
        col("timestamp"), col("coordinates")(0) as "lon", 
        col("coordinates")(1) as "lat", 
        col("'properties.tide (above mllw)'") as "tideAboveMllw",
        col("properties.wind speed") as "windSpeed")

您首先应该避免使用这样的名称,但可以拆分访问路径:

val df = spark.range(1).select(struct(
  lit(123).as("tide (above mllw)"),
  lit(1).as("wind speed")
).as("properties"))

df.select(col("properties").getItem("tide (above mllw)"))

// or

df.select(col("properties")("tide (above mllw)"))
或用反勾号将有问题的字段括起来:

df.select(col("properties.`tide (above mllw)`"))
这两种解决方案都假定数据包含以下结构(基于用于查询的访问路径):


您首先应该避免使用这样的名称,但可以拆分访问路径:

val df = spark.range(1).select(struct(
  lit(123).as("tide (above mllw)"),
  lit(1).as("wind speed")
).as("properties"))

df.select(col("properties").getItem("tide (above mllw)"))

// or

df.select(col("properties")("tide (above mllw)"))
或用反勾号将有问题的字段括起来:

df.select(col("properties.`tide (above mllw)`"))
这两种解决方案都假定数据包含以下结构(基于用于查询的访问路径):


您的建议给了我以下错误:org.apache.spark.sql.AnalysisException:无法解析(时间戳、坐标、属性)中的列名“'properties.tide(高于mllw)”。好的,抱歉。TBH我一开始甚至无法重现错误。您的建议给了我这个错误:org.apache.spark.sql.AnalysisException:无法解析(时间戳、坐标、属性)之间的列名“'properties.tide(高于mllw)”。好的,抱歉。TBH我一开始甚至无法重现错误。您的第一个解决方案给了我这个错误:线程“main”org.apache.spark.sql.AnalysisException中的异常:气温、大气压力、露点、主导波周期、平均波方向、名称、程序名、,有效波高、潮汐(高于mllw):、能见度、水温、风向、风速您的第二个解决方案给了我这个错误:线程“main”org.apache.spark.sql.AnalysisException中的异常:气温、大气压力、露点、主导波周期、平均波向、,名称、项目名称、有效波高、潮汐(mllw以上):能见度、水温、风向、风速;您的第三个解决方案给了我这个错误:org.apache.spark.sql.AnalysisException:气温、大气压力、露点、主导波周期、平均波方向、名称、程序名称、有效波高、潮汐(高于mllw):、能见度、水温、风向、风速没有这样的结构场潮汐(高于mllw);在
潮汐(mllw上方)之后,似乎还有其他
是打字错误吗?只是用省略号表示有更多字段。这不是打字错误。您的第一个解决方案给了我这个错误:线程“main”org.apache.spark.sql.AnalysisException中的异常:气温、大气压力、露点、主导波周期、平均波方向、名称、程序名、有效波高、潮汐(高于mllw):、能见度、,水温、风向、风速您的第二个解决方案给了我这个错误:线程“main”org.apache.spark.sql.AnalysisException中的异常:气温、大气压力、露点、主导波周期、平均波方向、名称、程序名、有效波高、潮汐中没有这样的结构场潮汐(高于mllw)(mllw上方):、能见度、水温、风向、风速;您的第三个解决方案给了我这个错误:org.apache.spark.sql.AnalysisException:气温、大气压力、露点、主导波周期、平均波方向、名称、程序名称、有效波高、潮汐中没有这样的结构场潮汐(mllw上方)(mllw上方):、能见度、水温、风向、风速;
潮汐(mllw上方)之后似乎有额外的
是打字错误吗?只是用椭圆表示有更多的字段。这不是打字错误。