在SPARK Structured Streaming中是否存在关于StructField的错误

时间:2017-01-06 08:47:58

标签: apache-spark pyspark apache-spark-sql spark-structured-streaming

当我尝试这个时:

cfg = SparkConf().setAppName('MyApp')
spark = SparkSession.builder.config(conf=cfg).getOrCreate()

lines = spark.readStream.load(format='socket', host='localhost', port=9999,
                              schema=StructType(StructField('value', StringType, True)))
words = lines.groupBy('value').count()
query = words.writeStream.format('console').outputMode("complete").start()

query.awaitTermination()

然后我收到一些错误:

  

AssertionError:dataType应为DataType

我在第403行搜索./pyspark/sql/types.py中的源代码:

assert isinstance(dataType, DataType), "dataType should be DataType"

但基于 AtomicType DataType 强>

class StringType(AtomicType):
    """String data type.
    """

    __metaclass__ = DataTypeSingleton

那么有错吗?

1 个答案:

答案 0 :(得分:3)

在Python中DataTypes不用作单身人士。创建StructField时,您必须使用实例。此外,StructType需要一系列StructField

StructType([StructField('value', StringType(), True)])

然而,这在这里毫无意义。带有架构参数的TextSocketSource is fixed and cannot be modified架构。