我有以 parquet 格式保存的数据。Petastorm是我正在用来获取批量数据进行训练的库。
虽然我能够在我的本地系统中做到这一点,但相同的代码在数据块中不起作用。
我在本地系统中使用的代码
# create a iterator object train_reader. num_epochs is the number of epochs for which we want to train our model
with make_batch_reader('file:///config/workspace/scaled.parquet', num_epochs=4,shuffle_row_groups=False) as train_reader:
train_ds = make_petastorm_dataset(train_reader).unbatch().map(lambda x: (tf.convert_to_tensor(x))).batch(2)
for ele in train_ds:
tensor = tf.reshape(ele,(2,1,15))
model.fit(tensor,tensor)
我在数据块中使用的代码
with make_batch_reader('dbfs://output/scaled.parquet', num_epochs=4,shuffle_row_groups=False) as train_reader:
train_ds = make_petastorm_dataset(train_reader).unbatch().map(lambda x: (tf.convert_to_tensor(x))).batch(2)
for ele in train_ds:
tensor = tf.reshape(ele,(2,1,15))
model.fit(tensor,tensor)
我在DataBricks上遇到的错误代码是:
类型错误:init()缺少2个必需的位置参数:“示例”和“令牌”
我已经检查了文档,但找不到任何参数的示例和令牌的名称。但是,在petastorm中的类似方法make_reader中,对于Azure Databricks,我看到下面的代码行:
# create sas token for storage account access, use your own adls account info
remote_url = "abfs://container_name@storage_account_url"
account_name = "<<adls account name>>"
linked_service_name = '<<linked service name>>'
TokenLibrary = spark._jvm.com.microsoft.azure.synapse.tokenlibrary.TokenLibrary
sas_token = TokenLibrary.getConnectionString(linked_service_name)
with make_reader('{}/data_directory'.format(remote_url), storage_options = {'sas_token' : sas_token}) as reader:
for row in reader:
print(row)
在这里,我看到一些“sas_token”作为输入传递。
请建议我如何解决此错误?
我试着改变路径的 parquet 文件,但没有为我工作。
1条答案
按热度按时间doinxwow1#
代码中使用的SAS令牌可以通过以下步骤为您的容器生成:
Generate SAS