首页 > 解决方案 > 无法将字符串向上转换为 tinyint pyspark

问题描述

我有一个蜂巢表,我正试图像这样阅读,

from pyspark import SparkConf
from pyspark.sql import SparkSession

conf = SparkConf().set("spark.yarn.queue", "my_yarn_queue")
spark = SparkSession \
        .builder \
        .enableHiveSupport() \
        .config(conf=conf) \
        .getOrCreate()


sdf = spark.read.table('db_name.table_name')

我最终得到了一个像这样的 AnalysisException,

AnalysisException:'无法向上转换表。col_a从字符串到 col_a#8242: tinyint 因为它可能会截断\n;'

我看到了一些在 Scala 中读取 csv 文件的解决方案。我不认为我可以使用它。我不知道表的架构,如果我能以某种方式得到它,我不确定如何在这里使用它来解决这个错误。

如何修复此错误?

如果有帮助,我正在使用 spark 2.3。!

根据@Someshwar Kale 的评论,我尝试使用这样的模式阅读,

from pyspark.sql.types import *

schema = StructType([
  StructField("col_a", StringType()),
])


sdf = spark.read.schema(schema).table("db_name.table")

然后我得到了分析异常

AnalysisException: '不支持用户指定的模式table;'

标签: pythonpyspark

解决方案


推荐阅读