keras 如何在DataBricks中创建petastorm库的make_batch_reader对象?

7cjasjjr  于 2023-02-23  发布在  Storm
关注(0)|答案(1)|浏览(235)

我有以 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 文件,但没有为我工作。

doinxwow

doinxwow1#

代码中使用的SAS令牌可以通过以下步骤为您的容器生成:

  • 导航到容器所在的位置并选择设置。单击Generate SAS

  • 现在选择您要授予的所有必需权限(您需要执行的操作)。

  • 当您单击“生成”时,您将获得可在代码中使用的令牌。

相关问题