python - 在 azure synapse 中存储一个简单的字符串作为文本文件(到数据湖 gen2)
问题描述
我正在尝试使用在突触笔记本中编写的 python 代码将一个简单的字符串作为文本文件存储在 datalakeGen2 中。但这似乎不是直截了当的。
我试图将文本转换为 rdd 然后存储:
from pyspark import SparkConf
from pyspark import SparkContext
sc = SparkContext.getOrCreate(SparkConf().setMaster("local[*]"))
str = "test string"
text_path = adls_path + 'test.xml'
rdd_text = sc.parallelize(list(str)).collect()
# type(rdd_text)
rdd_text.saveAsTextFile(text_path)
但它给出的错误如下:
AttributeError: 'list' object has no attribute 'saveAsTextFile'
Traceback (most recent call last):
AttributeError: 'list' object has no attribute 'saveAsTextFile'
解决方案
因此python rdd_text = sc.parallelize(list(str)).collect()
在这里,您的结果以列表的形式存储在rdd_text
. 因为它是一个普通的 python 语句,因为它collect()
返回一个列表。
RDD是spark中的分布式数据结构和基本抽象,是不可变的。
例如, remove()
或者append()
是python中列表的对象,以便添加或删除元素-这样savesaveAsTextFile
是RDD写入文件的对象。
如下图所示,您可以看到tuple()
append 没有属性,因为它们是不可变的,RDD 也是如此。
因此,它不会将结果存储为列表,而不是python rdd_text = sc.parallelize(list(str)).collect()
可以使用。python rdd_text = sc.parallelize(list(str))
from pyspark import SparkConf
from pyspark import SparkContext
sc = SparkContext.getOrCreate(SparkConf().setMaster("local[*]"))
string = "test string"
adls_path="abfss://data@xxxxxxxx.dfs.core.windows.net/symbolexcel.xlsx"
text_path = adls_path + 'test.xlsx'
rdd_text = sc.parallelize(list(string))
rdd_text.saveAsTextFile(text_path)
推荐阅读
- c# - 您如何在显示的错误消息中退出硒测试
- javascript - 将 JSON 数据与 gatsby-node.js 中的发布过程集成
- c - 了解链表 C 中的递归函数
- vlc - 计算视频 DVD 的唯一 ID
- android - 第一个视频看不到 YouTube 播放器下一个上一个按钮
- php - cPanel Parked Domains 不返回数组
- ssis - 如何为 SSIS 中的每个重复行仅获取一条记录
- sql - 为另一列中的重复值选择 MAX 值
- javascript - 使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中
- nginx - Nginx 重定向,除了一些扩展