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



当我尝试这个时:

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()

然后我得到一些错误:

断言错误:数据类型应为数据类型

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

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

但是基于原子类型的字符串类型而不是数据类型

class StringType(AtomicType):
    """String data type.
    """
    __metaclass__ = DataTypeSingleton

那么有没有错误呢?

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

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

然而,这在这里是完全没有意义的。TextSocketSource的架构是固定的,不能使用架构参数进行修改。

相关内容

  • 没有找到相关文章

最新更新