read.json没有像预期的那样在spark 2.1中工作

时间:2017-04-26 14:43:19

标签: apache-spark pyspark

我使用spark 1.3来使用.jsonRDD读取JSON流。但是,当我在2.1中使用它时它不起作用,因为它已被弃用。更新的版本是read.json()。但是read.json似乎不起作用并且给我一个错误

u"cannot resolve '`availableDocks`' given input columns: []; 

代码如下:

ssc = StreamingContext(sc, 60)
streams=ssc.textFileStream('s3://realtime-nyc-bike')
def getSparkSessionInstance(sparkConf):
    if ("sparkSessionSingletonInstance" not in globals()):
        globals()["sparkSessionSingletonInstance"] = SparkSession \
            .builder \
            .config(conf=sparkConf) \
            .getOrCreate()
    return globals()["sparkSessionSingletonInstance"]

def process(time, rdd):
    print("========= %s =========" % str(time))
    try:
        # Get the singleton instance of SparkSession
        spark = getSparkSessionInstance(rdd.context.getConf())

        # Convert RDD[String] to RDD[Row] to DataFrame
        df = spark.read.json(rdd)

        # Creates a temporary view using the DataFrame

        df.createOrReplaceTempView("station_data")
        results=spark.sql("select stationName from station_data where availableDocks > 20") 
        results.show()

json是有效的格式并经过验证。有没有办法为json指定列。这在使用jsonRDD的1.3上工作正常。 json数据可以从https://feeds.citibikenyc.com/stations/stations.json获得,其中我只使用了stationBeanList。

0 个答案:

没有答案