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
Join Apache Spark SQL问题:java.lang.RuntimeException:[1.517]失败:应为标识符_Join_Apache Spark_Apache Spark Sql - Fatal编程技术网

Join Apache Spark SQL问题:java.lang.RuntimeException:[1.517]失败:应为标识符

Join Apache Spark SQL问题:java.lang.RuntimeException:[1.517]失败:应为标识符,join,apache-spark,apache-spark-sql,Join,Apache Spark,Apache Spark Sql,根据我对sparksql的调查,我知道有两个以上的表不能直接连接,我们必须使用子查询来实现它。因此,我使用子查询并能够连接3个表: 有以下疑问: 选择姓名、年龄、性别、dpi.msisdn、subscriptionType、, maritalStatus、isHighARPU、ipAddress、开始时间、结束时间、isRoaming、, 从选择subsc.name、subsc.age、, subsc.gender,subsc.msisdn,subsc.subscriptionType, sub

根据我对sparksql的调查,我知道有两个以上的表不能直接连接,我们必须使用子查询来实现它。因此,我使用子查询并能够连接3个表:

有以下疑问:

选择姓名、年龄、性别、dpi.msisdn、subscriptionType、, maritalStatus、isHighARPU、ipAddress、开始时间、结束时间、isRoaming、, 从选择subsc.name、subsc.age、, subsc.gender,subsc.msisdn,subsc.subscriptionType, subsc.maritalStatus、subsc.isHighARPU、cdr.ipAddress、cdr.startTime、, cdr.endTime,cdr.i正在从订阅者\u META subsc,cdr\u FACT cdr 其中subsc.msisdn=cdr.msisdn和cdr.isRoaming='Y'温度, DPI_事实DPI,其中temp.msisdn=DPI.msisdn

但在相同的模式下,我尝试连接4个表时,它会引发以下异常

java.lang.RuntimeException:[1.517]失败:应为标识符

查询以联接4个表:

从选择姓名、年龄、性别、dpi.msisdn、, subscriptionType、maritalStatus、isHighARPU、ipAddress、startTime、, endTime,isRoaming,dpi.totalCount,dpi.website从选择 subsc.name、subsc.age、subsc.gender、subsc.msisdn、, subsc.subscriptionType,subsc.maritalStatus,subsc.isHighARPU, cdr.ipAddress、cdr.startTime、cdr.endTime、cdr.isRoaming FROM 订阅服务器\u META subsc,CDR\u事实CDR,其中subsc.msisdn=CDR.msisdn 和cdr.isRoaming='Y'temp,DPI_事实DPI其中temp.msisdn= dpi.msisdn内部,计费_元计费,其中inner.msisdn= billing.msisdn

有人能帮我做这个查询吗

提前谢谢。错误如下:

09/02/2015 02:55:24 [ERROR] org.apache.spark.Logging$class: Error running job streaming job 1423479307000 ms.0
java.lang.RuntimeException: [1.517] failure: identifier expected

 SELECT name, dueAmount FROM (SELECT name, age, gender, dpi.msisdn, subscriptionType, maritalStatus, isHighARPU, ipAddress, startTime, endTime, isRoaming, dpi.totalCount, dpi.website FROM (SELECT subsc.name, subsc.age, subsc.gender, subsc.msisdn, subsc.subscriptionType, subsc.maritalStatus, subsc.isHighARPU, cdr.ipAddress, cdr.startTime, cdr.endTime, cdr.isRoaming FROM SUBSCRIBER_META subsc, CDR_FACT cdr WHERE subsc.msisdn = cdr.msisdn AND cdr.isRoaming = 'Y') temp, DPI_FACT dpi WHERE temp.msisdn = dpi.msisdn) inner, BILLING_META billing where inner.msisdn = billing.msisdn
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^
        at scala.sys.package$.error(package.scala:27)
        at org.apache.spark.sql.catalyst.SqlParser.apply(SqlParser.scala:60)
        at org.apache.spark.sql.SQLContext.parseSql(SQLContext.scala:73)
        at org.apache.spark.sql.api.java.JavaSQLContext.sql(JavaSQLContext.scala:49)
        at com.hp.tbda.rta.examples.JdbcRDDStreaming5$7.call(JdbcRDDStreaming5.java:596)
        at com.hp.tbda.rta.examples.JdbcRDDStreaming5$7.call(JdbcRDDStreaming5.java:546)
        at org.apache.spark.streaming.api.java.JavaDStreamLike$$anonfun$foreachRDD$1.apply(JavaDStreamLike.scala:274)
        at org.apache.spark.streaming.api.java.JavaDStreamLike$$anonfun$foreachRDD$1.apply(JavaDStreamLike.scala:274)
        at org.apache.spark.streaming.dstream.DStream$$anonfun$foreachRDD$1.apply(DStream.scala:527)
        at org.apache.spark.streaming.dstream.DStream$$anonfun$foreachRDD$1.apply(DStream.scala:527)
        at org.apache.spark.streaming.dstream.ForEachDStream$$anonfun$1.apply$mcV$sp(ForEachDStream.scala:41)
        at org.apache.spark.streaming.dstream.ForEachDStream$$anonfun$1.apply(ForEachDStream.scala:40)
        at org.apache.spark.streaming.dstream.ForEachDStream$$anonfun$1.apply(ForEachDStream.scala:40)
        at scala.util.Try$.apply(Try.scala:161)
        at org.apache.spark.streaming.scheduler.Job.run(Job.scala:32)
        at org.apache.spark.streaming.scheduler.JobScheduler$JobHandler.run(JobScheduler.scala:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

由于您在sql中使用了Spark的保留关键字inner,因此发生了异常。避免将的用作自定义标识符。

能否尝试将别名的名称从内部更改为其他名称