apache-spark - 使用 Spark 转换 Oracle RAW 类型
问题描述
我在 Oracle DB 中有一个表,其中包含存储为RAW 类型的列。我正在建立一个 JDBC 连接来读取该列,当我打印结果数据帧的架构时,我注意到我有一个二进制数据类型的列。这正是我所期待的。
问题是我需要能够将该列作为字符串读取,所以我认为一个简单的数据类型转换就可以解决它。
df.select("COLUMN").withColumn("COL_AS_STRING", col("COLUMN").cast(StringType)).show
但我得到的是一堆随机字符。由于我正在处理 RAW 类型,因此可能不存在此数据的字符串表示形式,因此,为了安全起见,我做了简单的选择以从源中获取第一行(使用 sqoop-eval)并且不知何故sqoop 可以将此列显示为字符串。
然后我认为这可能是一个编码问题,所以我尝试了这个:
df.selectExpr("decode(COLUMN,'utf-8')").show
使用 utf-8 和一堆其他编码。但我得到的只是随机字符。
有谁知道我该如何进行这种数据类型转换?
解决方案
推荐阅读
- javascript - 嵌入式 Edge 下的 jQuery Ajax 404(Office 任务窗格)
- c++ - 如何使用 CMake 在 macOS 上链接 fftw3?
- python - 即使安装成功,Raspberry Pi 也找不到 Tesseract
- python - 我试图在 odoo 中安装一个新模块但发生错误,AttributeError: 'str' object has no attribute 'setdefault'
- google-cloud-platform - FlexRs=SPEED_OPTIMIZED 在 Dataflow 中的作用是什么?
- apache-spark - 在 Pyspark 中管理多个数据框
- docker - Docker更改命名卷的位置
- reactjs - 如何在 ant design 崩溃中更改图标(Accordian)
- javascript - 基于重复属性删除数组元素
- php - Symfony & Panther:Panther 不加载 - 无法创建 PantherClient()