这里尝试使用 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')
尝试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)
Databricks 中我的 kaggle.json 凭证:
我尝试了两种类型的连接,但缺少某些内容或我的凭据错误,因为错误是“原因:未经授权”。
这里的主要问题是您尝试直接引用 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
尝试以下操作:
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 方法负责获取这些密钥。
导入操作系统 导入 json
数据={ “用户名”:“XXXXXXX”, “关键”:“XXXXXXXXX” }
json_string = json.dumps(数据)
dbutils.fs.put('文件:/databricks/driver/kaggle.json', json_string, overwrite=True)
dbutils.fs.cp('文件:/databricks/driver/kaggle.json','文件:/root/.kaggle/kaggle.json')
os.system(“chmod 600 /root/.kaggle/kaggle.json”)