在尝试编写代码来实现此评论时:https://stackoverflow.com/a/34521857/1730064
我写了一个运行以下代码的小脚本:
from pyspark.sql import SQLContext, HiveContext
from pyspark import SparkContext
from pyspark.sql.types import *
sc = SparkContext.getOrCreate()
hivContext = HiveContext(sc)
print sc
from pyspark.mllib.random import RandomRDDs
#df = RandomRDDs.normalRDD(sc, 1000, 10, 1).map(Tuple1(_)).toDF("x")
df = RandomRDDs.uniformRDD(sc, 1000, 10, 1).map(lambda x: (x, )).toDF()
print df.show()
df.registerTempTable("df")
hivContext.sql("SELECT percentile_approx(_1, 0.5) FROM df").show
但是,当我使用spark-submit运行代码时,我得到以下输出:
./spark-submit bar.py
... Traceback(最近一次调用最后一次):文件“/root/bar.py”,第18行,在hivContext.sql中(“SELECT percentile_approx(_1,0.5)FROM df”) . show file“/ usr / local /tmpusr/third-party/spark/python/lib/pyspark.zip/pyspark/sql/context.py“,第580行,在sql文件中”/ usr / local / tmpusr / third-party / spark / python / lib / py4j-0.9-src.zip/py4j/java_gateway.py“,第813行,在调用文件中”/usr/local/tmp/third-party/spark/python/lib/pyspark.zip/pyspark/sql/utils.py “,第51行,在deco pyspark.sql.utils.AnalysisException:你”缺少'在','靠近'';第1行pos 27“17/12/12 18:53:15 INFO spark.SparkContext:调用stop ()来自shutdown hook
我无法确定设置Hive Context是否有问题,还是Hive需要解决的问题?
1 回答
问题是hivecontext不能直接识别列名“_1”,而应该将其命名为其他东西,获得此权利的一种方法如下: