使用 R 从 Microsoft Azure 读取 csv 文件

2024-01-12

我最近开始使用 databricks 和 azure。

我有微软天蓝色存储资源管理器。我在 databricks 上运行了一个 jar 程序 它在路径中的 azure storgae explorer 中输出许多 csv 文件

..../myfolder/subfolder/output/old/p/ 

我通常做的事情是去文件夹p并下载所有 csv 文件 通过右键单击p文件夹并单击download在我的本地驱动器上 并在 R 中使用这些 csv 文件进行任何分析。

我的问题是,有时我的运行可能会生成超过 10000 个 csv 文件 下载到本地驱动器需要很多时间。

我想知道是否有教程/R 包可以帮助我阅读 来自上述路径的 csv 文件,无需下载。例如 有什么办法可以设置吗

..../myfolder/subfolder/output/old/p/  

作为我的工作目录并以与我相同的方式处理所有文件。

编辑: 路径的完整 url 看起来像这样:

https://temp.blob.core.windows.net/myfolder/subfolder/output/old/p/

根据官方文件CSV Files https://docs.azuredatabricks.net/spark/latest/data-sources/read-csv.htmlAzure Databricks 的,您可以直接读取 Azure Databricks 笔记本的 R 中的 csv 文件作为本节的 R 示例Read CSV files notebook example https://docs.azuredatabricks.net/spark/latest/data-sources/read-csv.html#read-csv-files说道,如下图。

或者,我使用 R 包reticulate和Python包azure-storage-blob使用 Azure Blob 存储的 sas 令牌直接从 blob url 读取 csv 文件。

这是我的步骤如下。

  1. 我在 Azure Databricks 工作区中创建了一个 R 笔记本。
  2. 安装 R 包reticulate通过代码install.packages("reticulate").

  3. 安装Python包azure-storage-blob如下面的代码。

    %sh
    pip install azure-storage-blob
    
  4. 要运行 Python 脚本来生成容器级别的 sas 令牌并使用它来获取带有 sas 令牌的 blob url 列表,请参阅下面的代码。

    library(reticulate)
    py_run_string("
    from azure.storage.blob.baseblobservice import BaseBlobService
    from azure.storage.blob import BlobPermissions
    from datetime import datetime, timedelta
    
    account_name = '<your storage account name>'
    account_key = '<your storage account key>'
    container_name = '<your container name>'
    
    blob_service = BaseBlobService(
        account_name=account_name,
        account_key=account_key
    )
    
    sas_token = blob_service.generate_container_shared_access_signature(container_name, permission=BlobPermissions.READ, expiry=datetime.utcnow() + timedelta(hours=1))
    
    blob_names = blob_service.list_blob_names(container_name, prefix = 'myfolder/')
    blob_urls_with_sas = ['https://'+account_name+'.blob.core.windows.net/'+container_name+'/'+blob_name+'?'+sas_token for blob_name in blob_names]
    ")
    blob_urls_with_sas <- py$blob_urls_with_sas
    
  5. 现在,我可以在 R 中使用不同的方式使用 sas 令牌从 blob url 读取 csv 文件,如下所示。

    5.1. df <- read.csv(blob_urls_with_sas[[1]])

    5.2.使用R包data.table

    install.packages("data.table")
    library(data.table)
    df <- fread(blob_urls_with_sas[[1]])
    

    5.3.使用R包readr

    install.packages("readr")
    library(readr)
    df <- read_csv(blob_urls_with_sas[[1]])
    

注:对于reticulate库,请参考RStudio文章Calling Python from R https://rstudio.github.io/reticulate/articles/calling_python.html.

希望能帮助到你。


更新您的快速问题:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 R 从 Microsoft Azure 读取 csv 文件 的相关文章

随机推荐

  • Firestore 本地 http 与真实数据库:Cloud Firestore 模拟器未运行,因此数据库操作将失败并出现“默认凭据”错误

    我想在本地运行 firebase http 云函数来访问真正的远程 firestore 数据库 为此 我使用以下命令在本地运行我的函数 FIREBASE CONFIG path to credential json GOOGLE APPLI
  • com.twitter:util-core 中存在冲突的跨版本后缀

    我升级到 sbt 0 13 这个问题开始出现 我在这里找到了解释 https groups google com forum topic simple build tool MoApqIwx4R0 https groups google c
  • 如何创建自定义导航抽屉,打开与抽屉 onitemclick 相邻的 ListView?

    我创建了简单的导航抽屉 但是当我遇到如图所示的导航抽屉时 我被卡住了 我不知道如何实现这种功能 在此图像中 城市 是导航抽屉的项目 当我单击城市时 它会打开与其相邻的列表 这是完整的代码 因为我不知道细节 它可能无法真正满足您的要求 首先我
  • VBA 打开 Excel 文件

    我正在尝试使用 VBA 打开 Excel 文件文件夹中的 Excel 文件 我指示我的代码将最终用户直接带到该文件夹 并允许他从对话框中选择文件 但即使从对话框中选择文件后 我也无法打开该文件 我对问题的理解是 我错过了选择文件后打开文件的
  • 内联命名空间可以用来保持共享库的向后兼容性吗?

    C 内联命名空间的基本原理是源代码和二进制兼容性 请参阅 Herb Sutter 的论文 链接为N2535 http www open std org jtc1 sc22 wg21 docs papers 2008 n2535 htm 但我
  • 响应 json 时禁用“Cookie”标头

    我想在以 json 形式响应时禁用 删除 Cookie 标头 其实我可以设置Config set session driver array 使用 Laravel 4 2 进行过滤 如果我在 L5 版本 5 0 5 中执行此操作 我会在日志文
  • 使用 .NET Core 在 Mac OSX 上进行 Office (Excel) COM 互操作?

    我所在的团队目前专门使用 C NET 创建 Windows 桌面应用程序 这些应用程序通过 Office COM Interop 与 Microsoft Excel 的本地用户实例进行交互 我目前负责指定一个新产品 但我被告知 除非该应用程
  • 使用 C# 编码的具有 https 支持的 http 侦听器

    我找到了很多如何设置 httplistener 以使用 HTTPS 的答案 但每个解决方案都需要使用命令行 我想这是最快的方法 但我想编写 C 类来处理这个问题 在旧的解决方案中 我使用了网络服务器类 在互联网上的某个地方找到 我不记得确切
  • 在 C++ 中使用 gsl 时如何避免静态成员函数

    我想在 C 类中使用 GSL 而不将成员函数声明为static 这样做的原因是因为我对它们不太了解 对线程安全也不太确定 从我读到的来看 std function可能是一个解决方案 但我不确定如何使用它 我的问题归结为如何删除static在
  • JBoss 6:将 EJB 注入 servlet

    Folks 每次新版本的 JBoss 推出时 我都必须重新学习并浪费时间在这些东西上 这让我非常恼火 我有一个在 JNDI 空间中发现并声明的无状态 EJB 10 01 53 044 INFO org jboss ejb3 proxy im
  • AWS Cognito 用户池 - 只读客户端

    标题中已经说明了问题 有没有办法为 Amazon Cognito 用户池创建仅具有读取权限的应用程序客户端 这有点奇怪 但是当我取消选中 可写属性 部分中的所有框 用户池 gt 常规设置 gt 添加另一个应用程序客户端 时 它会返回以下警告
  • 驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Selenium 错误

    我有一个令人恼火的 Selenium 错误 驱动程序可执行文件的路径必须由 webdriver chrome driver 系统属性设置 这是我正在使用的代码 Environment SetEnvironmentVariable webdr
  • Perl后台进程

    我正在尝试在 perl 中运行后台进程 我创建了一个子进程 用于调用另一个 perl 脚本 我想与这个子进程并行运行几行代码 子进程完成后 我想打印一行代码 主要脚本 usr bin perl 1 print before the chil
  • 考虑中心的顺序,重新标记 kmean 结果中的样本

    我正在使用 kmeans 来聚类我的数据 对于生成的结果我有一个计划 我想根据订购的中心重新标记样本 考虑以下示例 a c a b c d e F i j k l m n b c 1 2 3 20 21 21 40 41 42 4 23 5
  • 循环字符串时向字典添加多个值

    对Python 3仍然是超级新手 并且遇到了问题 我正在尝试创建一个函数 它返回一个字典 其中键是每个单词的长度 值是字符串中的单词 例如 如果我的字符串是 狗快速向前跑到公园 我的字典应该返回 2 to 3 The run the 4 d
  • 如何使用 Xcode 11 从命令行上传到 App Store?

    以前 在 Xcode 10 中 我们使用altool上传到App Store ALTOOL Applications Xcode app Contents Applications Application Loader app Conten
  • PHP array_filter 从数组中仅获取一个值[重复]

    这个问题在这里已经有答案了 我试图排除 foreach 循环并使用数组函数重构它们 我假设下面的代码会给我一个包含源数组中所有第一项的结果
  • 相关控制器中的 NSToolbarItem 验证

    我有一个 NSToolbarItem 其视图为 NSButton 主菜单中有一个 NSMenuItem 两者具有相同的操作 该操作被发送到第一响应者 而不是特定目标 该方法最终在 NSSplitViewController 的子类中实现 位
  • 删除 3D 图中的轴边距

    我花了几天时间试图找到一种方法来消除 3D 图中轴上的微小边距 我试过ax margins 0 and ax autoscale view tight 和其他方法 但这些微小的利润仍然存在 特别是 我不喜欢条形直方图升高 即它们的底部不在零
  • 使用 R 从 Microsoft Azure 读取 csv 文件

    我最近开始使用 databricks 和 azure 我有微软天蓝色存储资源管理器 我在 databricks 上运行了一个 jar 程序 它在路径中的 azure storgae explorer 中输出许多 csv 文件 myfolde