我在代码 df1=df.filter((col('A')=='xf')) 中遇到以下错误 数据类型 ntext 和 varchar 在等于运算符中不兼容
正如史蒂文所说,你可以在 pyspark 中查询或过滤时进行转换。
我在 SQL Server 中过滤时遇到了同样的错误。
解决方案。
SELECT *
FROM ExampleTable
WHERE CAST(Description AS NVARCHAR(MAX)) = 'xf';
因此,您可以执行以下任一方式。
query = """
SELECT CAST(A AS NVARCHAR(MAX)) AS A, *
FROM your_table
"""
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:sqlserver://<server>:<port>;database=<database>") \
.option("query", query) \
.option("user", "<user>") \
.option("password", "<password>") \
.load()
使用上述查询后,您可以直接过滤它。
或
from pyspark.sql.functions import col
df1 = df.withColumn("A", col("A").cast("string"))
filtered_df = df1.filter(col("A") == "xf")
将其投射到 pyspark 转换中,然后对其进行过滤。
如果您不想要任何这些,那么您可以将数据库表中的架构更新为受支持的类型,即
nvarchar(max)
或 varchar(max)