当我尝试这个时:
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
那么有错吗?
答案 0 :(得分:3)
在Python中DataTypes
不用作单身人士。创建StructField
时,您必须使用实例。此外,StructType
需要一系列StructField
:
StructType([StructField('value', StringType(), True)])
然而,这在这里毫无意义。带有架构参数的TextSocketSource
is fixed and cannot be modified架构。