python - 无法将字符串向上转换为 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
;'
解决方案
推荐阅读
- markdown - 如何更改 mkdocs 中的内联代码颜色?
- java - 带有 Java3.141 的 Selenium webdriver
- typescript - 如何使深度链接在 Angular 8 生产版本中正常工作
- r - 如何在 R 中使用 ggplot2 编辑图例?
- html - 如何在不使用 ID 偏好的情况下更改链接的颜色?
- python - Jupiter 笔记本错误“NameError:未定义名称 'AlignDlib'”
- syncfusion - 使用angular 8在syncfusion调度程序中自定义事件按钮编辑器窗口
- python - 在 OpenCv 中正确复制轮廓的内部区域
- stackexchange.redis - 没有可用于服务此操作的连接(Redis 客户端)
- python - 如何修复此字符串格式错误