使用 Kaggle 的 API 将数据集从 Kaggle 导入到 Databricks

问题描述 投票:0回答:3

这里尝试使用 Kaggle 的 API 将数据集从 **Kaggle ** 导入 **DataBricks **(社区)。但我已经跌倒了,迷失了三天。请好心人帮助我。

尝试1:

!pip install kaggle

import os
import kaggle

os.environ['KAGGLE_USERNAME'] = 'xxxxxx'
os.environ['KAGGLE_KEY'] = 'xxxxx'

from kaggle.api.kaggle_api_extended import KaggleApi

api = KaggleApi()
api.authenticate()

api.dataset_download_files('taricov/mobile-wallets-in-egypt-2020')

尝试 1 个错误: Error trying 1

尝试2:

import os
import kaggle

from kaggle.api.kaggle_api_extended import KaggleApi
api = KaggleApi()
api_token_path = '/FileStore/tables/Kaggle_token/kaggle-2.json'
os.environ['KAGGLE_CONFIG_DIR'] = os.path.dirname(api_token_path)

api.dataset_download_files('taricov/mobile-wallets-in-egypt-2020', path='/FileStore/mobile-wallets-in-egypt-2020',unzip=True)

尝试2个错误: Error trying 2

Databricks 中我的 kaggle.json 凭证: kaggle credential

我尝试了两种类型的连接,但缺少某些内容或我的凭据错误,因为错误是“原因:未经授权”。

api databricks kaggle
3个回答
1
投票

这里的主要问题是您尝试直接引用 DBFS 上的文件

/Filestore/...
,但 Kaggle API 不知道有关该文件系统的任何信息,因为它使用 Python 的本地文件 API。你有两个选择:

  • 通过在文件名前添加

    /dbfs
    直接引用 DBFS 路径。就像,
    /dbfs/FileStore/tables/Kaggle_token/kaggle-2.json
    而不是
    /FileStore/tables/Kaggle_token/kaggle-2.json

  • 使用DBUtils命令将文件复制到本地磁盘或将下载的数据上传到DBFS。例如,要将文件复制到本地磁盘,您可以使用以下命令(不是

    file:
    前缀):

import os
conf_dir = "/tmp/kaggle-conf"
os.mkdir(conf_dir)
dbutils.fs.cp('/FileStore/tables/Kaggle_token/kaggle-2.json', 
  f'file:{conf_dir}/kaggle.json')
os.environ['KAGGLE_CONFIG_DIR'] = conf_dir

0
投票

尝试以下操作:

import os
import kaggle

from kaggle.api.kaggle_api_extended import KaggleApi
api = KaggleApi()
api_token_path = '/FileStore/tables/Kaggle_token/kaggle-2.json'
os.environ['KAGGLE_CONFIG_DIR'] = os.path.dirname(api_token_path)
api.authenticate()

api.dataset_download_files('taricov/mobile-wallets-in-egypt-2020', path='/FileStore/mobile-wallets-in-egypt-2020',unzip=True)

似乎在您的第一个片段中缺少环境变量,而在第二个片段中没有调用 api.authenticate() 。在这个方法中,有一个 read_config_environment 方法负责获取这些密钥。


0
投票

导入操作系统 导入 json

定义kaggle.json文件的内容

数据={ “用户名”:“XXXXXXX”, “关键”:“XXXXXXXXX” }

将数据转换为 JSON 字符串

json_string = json.dumps(数据)

将 JSON 字符串放入 DBFS

dbutils.fs.put('文件:/databricks/driver/kaggle.json', json_string, overwrite=True)

将 kaggle.json 文件从 DBFS 移动到驱动程序节点的本地文件系统

dbutils.fs.cp('文件:/databricks/driver/kaggle.json','文件:/root/.kaggle/kaggle.json')

对 kaggle.json 文件设置适当的权限

os.system(“chmod 600 /root/.kaggle/kaggle.json”)

© www.soinside.com 2019 - 2024. All rights reserved.