gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

年度归档2023

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 2023
  • ( 页面16 )
人工智能 4月 2,2023

采用并扩展 Excel 以进行 AI 数据准备

有时最好的 IT 解决方案就是您已经拥有的解决方案。当然,并非总是如此:例如,云基础设施往往比私有数据中心产生更多的灵活性和选择。除非你是嘿!,在这种情况下,你会认为私有数据中心是正确的选择。
正如我的同事 David Linthicum 所强调的那样,关键是不要沉迷于“面向流行语的架构”,在这种架构中,企业可能“花费两倍的钱来实现实际上不需要容器化的工作负载的现代化,这一切都是因为有人想把他们简历上的容器。”
问题不在于容器。或云。或者 [在此处插入热门技术]。不,问题在于将行业流行语广泛应用于业务问题,而不是让业务问题决定解决方案。
鉴于疯狂的企业如何将神奇的机器学习仙尘应用到他们的业务挑战中,机器学习和人工智能 (ML/AI) 是值得深思熟虑的领域之一。鉴于当今 ML/AI 人才相对匮乏,值得看看如何更好地利用贵公司已经雇用的人才,而不是祈祷你能够聘请数据科学家神奇地发现数据中的洞察力。一种更好的方法可能是更好地利用世界上最流行的数据工具来为机器学习模型准备好数据。是的,我说的是 Excel。
人工智能的新进展为数百万人提供了机会,让他们可以通过机器学习开始创作各种内容,从代码到复制再到艺术。自 2022 年 11 月公开发布以来,ChatGPT 占据了世界各地的头条新闻,并引发了商业应用的热潮,同时也出现了许多滥用 ChatGPT 反馈、担心论文和考试作弊等例子。
谷歌推出了一款名为 GPT for Sheets 的 Chrome 扩展程序,它允许用户使用会话语言来操作数据;微软表示,它将把 ChatGPT 集成到其所有产品中,首先是 Bing。微软最近向 ChatGPT 的创建者 OpenAI 投资了 100 亿美元。
但与 ChatGPT 应用程序一样令人兴奋(有时令人失望)的是,已经有一种更加平凡且有前途的机器学习方法可用。
我之前写过关于 Akkio 的文章,这是一家结合了无代码和人工智能的机器学习公司,以及民主党如何在 2022 年选举周期中将该工具变成印钞机。 Akkio 推出了 Chat Data Prep,这是一个很酷的新机器学习平台,允许用户使用普通对话语言转换数据。技术术语是自然语言处理,但考虑它的不那么流行的方式是它可以改变 Excel 用户的工作方式,并使他们能够更轻松地接受 AI 的承诺。
全世界估计有 7.5 亿人使用 Excel。微软 CEO 萨蒂亚·纳德拉 (Satya Nadella) 宣布 Excel 是公司最重要的消费产品。将 Excel 转变为机器学习的强大工具,对于让机器学习成为普通企业员工最终可以利用的东西大有帮助。
Akkio 联合创始人 Jonathan Reilly 在接受采访时说:“我们试图弄清楚的一件事是如何在数据上构建使用 AI 所需的所有转换,即使在我们简单的无代码 ML 平台上也是如此。” “然后我们意识到我们可以只使用 ML 来完成这项任务。没有组织希望财务规划人员花时间导入、导出和处理数据——他们希望他们专注于数据告诉他们的事情。”
Akkio 的新功能让用户只需输入会话语言即可更改电子表格数据。利用人工智能和大型语言模型,该平台解释用户的请求并对数据进行必要的更改。这出奇的简单。亲眼看看 Akkio 的在线演示(非门控)。
为什么这很重要?您可能会向数据科学家支付六位数的费用来让您的数据发挥作用,但他们的大部分时间都花在了数据转换上,也就是数据争论上。这是在不更改数据集内容的情况下将数据从一种格式、标准或结构转换为另一种格式、标准或结构的技术过程,以便为机器学习模型的使用做好准备。数据准备相当于清洁工作,尽管是非常重要的工作。转型提高了业务和分析流程的效率,并使企业能够做出更好的数据驱动决策。但除非用户熟悉 Python 或流行的查询语言 SQL,否则它既困难又耗时。
例如,涉及几个步骤,从数据清理开始(转换数据类型并删除不需要的字符)。下面是一个假设的示例,说明了解 SQL 或 Python 的人可能会进行转换以协调多个数据集以用于机器学习模型:
从 Year_Birth 中减去当前年份。
它与上面的相似,但增加了从日期特征中提取年份部分。
这包括四个步骤:
并不断。
在 Excel 的四分之三的十亿用户中,没有多少人拥有这些基本的编程技能。但他们中的任何一个都可以用普通英语输入一个简单的请求,而 Chat Data Prep 将完成数据转换的繁重工作。它甚至可以提供结果预览,以便您检查输出是否符合您的要求。 Akkio 声称 Chat Data Prep 可以将准备分析数据所需的时间减少 10 倍。借助 Chat Data Prep,用户可以重新格式化日期、执行基于时间的数学运算,甚至可以使用简单的对话命令修复混乱的数据字段。
使数据分析更易于访问、更高效、更准确是 AI 在幕后悄悄使越来越成为可能的平凡魔术之一。 ChatGPT 将成为头条新闻,但您的 Excel 用户可能会在企业内承担机器学习转型的重任。

作者 east
人工智能 4月 2,2023

零样本学习和生成人工智能的基础

我们可能记得 2022 年是认知人工智能技术从实验室走向主流应用的一年。 ChatGPT 是一种回答问题的对话式 AI,在不到一周的时间内用户从零增加到一百万。图像生成 AI DALL-E 2、Midjourney 和 Stable Diffusion 开放了公众访问,并以从短短语和句子生成的图像的多样性和质量吸引了全世界的关注。
我承认玩 DALL-E 2 很有趣。这是两个迷失的灵魂在鱼缸里游泳的演绎,蒂姆伯顿描绘了打开未成熟鳄梨的痛苦。
Snowflake 产品管理总监 Torsten Grabs 表示:“人工智能已经成为特斯拉和 Waymo 等自动驾驶汽车、无与伦比的游戏玩法(想想 AlphaGo)以及 DALL-E 等迷人的艺术一代等项目的头条新闻。”
许多机器学习模型使用监督学习技术,其中使用标记数据集训练神经网络或其他模型。例如,您可以从标记为猫、狗和其他宠物的图像数据库开始,然后训练 CNN(卷积神经网络)对它们进行分类。
在现实世界中,大规模标记数据集既昂贵又复杂。医疗保健、制造业和其他行业有许多不同的用例来做出准确的预测。合成数据可以帮助扩充数据集,但训练和维护监督学习模型的成本仍然很高。
要了解生成式 AI,首先要了解不依赖于标记数据集的学习算法。单次和零次学习算法是示例方法,它们是生成式 AI 技术的基础。
以下是 ChatGPT 定义单次学习和零次学习的方式:
John Snow Labs 的首席技术官 David Talby 说:“顾名思义,单次或少量学习旨在从一个或仅几个示例中对对象进行分类。目标是让人类用简单的英语提示模型成功识别图像、短语或文本。”
一次性学习是通过对每个样本进行单一训练示例来执行的,比如新员工的头像。然后该模型可以计算两个头像之间的相似度分数,例如与样本匹配的人的照片,并且该分数确定足够的匹配以授予访问权限。一次性学习的一个示例使用了 Omniglot 数据集,该数据集包含来自 50 个不同字母表的 1,623 个手绘字符。
在零样本学习中,网络接受图像和相关数据的训练,包括字幕和其他上下文元数据。零样本学习的一种方法使用 OpenAI 的 CLIP(对比语言-图像预训练)将图像降维为编码,从文本中创建所有可能标签的列表,然后计算匹配图像与标签的相似度得分。然后可以使用该模型使用相似性得分将新图像分类为标签。
OpenAI 的生成 AI DALL-E 使用 CLIP 和 GAN(生成对抗网络)来执行反向功能并从文本创建图像。
小样本学习技术的一项应用是在医疗保健领域,其中带有诊断结果的医学图像可用于开发分类模型。 “不同的医院可能会以不同的方式诊断病情,”Talby 说。 “通过一次或几次学习,临床医生可以在不使用代码的情况下提示算法来实现特定结果。”
但不要指望全自动放射学诊断会过早出现。 Talby 说:“虽然自动提取信息的能力非常有价值,但一次性、少量甚至零样本学习不会很快取代医疗专业人员。”
Persistent 的首席技术官 Pandurang Kamat 分享了其他几个潜在的应用。 “零样本和少样本学习技术在药物发现、分子发现、零日攻击、客户支持团队的案例偏转以及其他可能很难标记训练数据的领域释放机会。”
Kamat 还警告当前的局限性。 “在计算机视觉中,这些技术在图像识别、分类和跟踪方面效果很好,但在需要高精度/精确度的场景中可能会遇到困难,例如识别癌细胞并在病理图像中标记它们的轮廓,”他说。
制造业在识别缺陷方面也有潜在的小样本学习应用。 IndustrialML 的首席执行官 Arjun Chandar 说:“没有任何一家运营良好的工厂会产生足够多的缺陷来拥有大量的缺陷类图像来进行训练,因此需要构建算法以基于少至几十个样本来识别它们。”
数据科学家可能会尝试使用单次和零次学习方法来解决未标记数据集的分类问题。学习算法和工具的一些方法包括使用 Amazon SageMaker 构建基于新闻的警报系统或在会话代理中使用零样本学习。
开发人员和数据科学家还应该将新的学习技术和可用模型视为新应用程序和解决方案的构建块,而不是针对特定问题优化的模型。例如,Moveworks 的工程总监 Chang Liu 表示,开发人员可以利用大规模 NLP(自然语言处理)模型,而不是自己构建模型。
“随着大型语言模型的引入,团队正在利用这些智能系统大规模解决问题。语言模型不需要构建一个全新的模型,只需要根据任务的描述和适当的答案进行训练,”刘说。
未来的人工智能解决方案可能看起来像今天的软件应用程序,混合了专有模型、嵌入式商业和开源组件以及第三方服务。 Snowflake 的 Grabs 表示:“几乎所有愿意花时间定义 AI 解决方案问题并采用新工具和实践来产生初始和持续改进的公司都可以获得成就。”
我们可能会在 2023 年看到新的学习方法和 AI 成就,因此数据科学团队必须不断研究、学习和试验。

作者 east
大数据开发 4月 1,2023

什么数据操作中的可观察性?

现在是早上 8 点,一位业务负责人正在查看财务绩效仪表板,质疑结果是否准确。几个小时后,一位客户登录到您公司的门户网站并想知道为什么他们的订单没有显示最新的定价信息。下午,数字营销主管很沮丧,因为来自他们的 SaaS 工具的数据源从未进入他们的客户数据平台。数据科学家也很沮丧,因为他们无法在没有加载最新数据集的情况下重新训练他们的机器学习模型。
这些是数据操作问题,它们很重要。企业应该正确地期望准确和及时的数据将被传送到数据可视化、分析平台、客户门户、数据目录、ML 模型,以及任何数据被消费的地方。
数据管理和数据操作团队花费大量精力构建和支持数据湖和数据仓库。理想情况下,它们由实时数据流、数据集成平台或 API 集成提供,但许多组织仍然有数据处理脚本和手动工作流,这些应该在数据债务清单上。不幸的是,数据管道的稳健性有时是事后才想到的,数据操作团队通常在解决数据集成中的源、管道和质量问题时反应迟钝。
在我的《数字开拓者》一书中,我写到数据集成工具较少的日子,手动修复数据质量问题是常态。 “每个数据处理应用程序都有一个日志,每个进程,无论有多少脚本以菊花链方式连接,也都有一个日志。在寻找失败进程的根本原因时,我成为了 sed、awk、grep 和 find 等 Unix 工具的向导,可以解析这些日志。”
今天,有比 Unix 命令更强大的工具来实现数据管道的可观察性。 Dataops 团队负责超越连接和转换数据源;他们还必须确保数据集成可靠地执行并有效地解决数据质量问题。
可观察性是 devops 团队采用的一种实践,可以通过客户旅程、应用程序、微服务和数据库功能进行跟踪。实践包括集中应用程序日志文件、监控应用程序性能以及使用 AIops 平台将警报关联到可管理的事件中。目标是创建可见性、更快地解决事件、执行根本原因分析、确定性能趋势、启用安全取证并解决生产缺陷。
Dataops 可观察性针对类似的目标,只是这些工具分析数据管道,确保可靠的数据交付,并帮助解决数据质量问题。
Monte Carlo 的联合创始人兼首席技术官 Lior Gavish 说:“数据可观察性是指组织在数据操作生命周期的每个阶段了解其数据健康状况的能力,从仓库或湖中的摄取到商业智能层,大多数数据质量问题都会暴露给利益相关者。”
Ascend.io 的首席执行官兼创始人 Sean Knapp 详细阐述了数据操作问题陈述:“可观察性必须有助于识别关键因素,例如管道的实时运行状态和数据形状的趋势,”他说。 “应及早发现延迟和错误,以确保在商定的服务水平内无缝传输数据。企业应该掌握管道代码中断和数据质量问题,以便可以快速解决这些问题,而不是传播给下游消费者。”
Knapp 强调商人是数据操作管道的主要客户。许多公司都在努力成为数据驱动的组织,因此当数据管道不可靠或不可信时,领导者、员工和客户都会受到影响。数据操作可观察性工具对于这些组织来说可能至关重要,尤其是当公民数据科学家将数据可视化和数据准备工具用作日常工作的一部分时。
Coralogix 的开发倡导者 Chris Cooney 说:“可观察性不仅仅是仪表板上呈现的几张图表。这是一种跨越整个堆栈的工程实践,使团队能够做出更好的决策。”
DevOps 团队通常使用多种监控工具来覆盖基础设施、网络、应用程序、服务和数据库。它类似于数据操作——同样的动机,不同的工具。 Calyptia 的创始人兼首席执行官 Eduardo Silva 说:“您需要有适当的系统来帮助理解这些数据,没有任何一种工具是足够的。因此,您需要确保您的管道可以将数据路由到各种目的地。”
Silva 推荐供应商中立的开源解决方案。这种方法值得考虑,尤其是因为大多数组织都使用多个数据湖、数据库和数据集成平台。这些数据平台之一内置的数据操作可观察性功能可能易于配置和部署,但可能无法提供跨平台工作的整体数据可观察性功能。
需要什么能力? Acceldata.io 的联合创始人兼首席技术官 Ashwin Rajeev 说:“企业数据可观察性必须有助于克服与​​构建和运行可靠数据管道相关的瓶颈。”
Rajeev 阐述道,“数据必须每次都通过使用适当的 API 和 SDK 仪器来高效地交付。工具应具有适当的导航和向下钻取功能,以便进行比较。它应该可以帮助数据操作团队快速识别瓶颈和趋势,以便更快地进行故障排除和性能调整,从而预测和预防事故。”
Dataops 可观察性的一个方面是操作:从源到数据管理平台再到消费的可靠性和准时交付。第二个问题是数据质量。 Coalesce 联合创始人兼首席执行官 Armon Petrossian 表示:“dataops 中的数据可观察性涉及确保业务和工程团队能够访问经过适当清理、管理和转换的数据,以便组织能够真正做出数据驱动的业务和技术决策。随着数据应用程序的当前发展,为了最好地准备数据管道,组织需要专注于提供代码优先方法的灵活性但基于 GUI 以实现企业规模的工具,因为毕竟不是每个人都是软件工程师”
因此,数据操作和数据可观察性必须具有吸引使用 API 和开发强大的实时数据管道的编码人员的能力。但非编码人员也需要数据质量和故障排除工具来处理他们的数据准备和可视化工作。
“就像 devops 广泛依赖低代码自动化优先工具一样,dataops 也是如此,”Gavish 补充道。 “作为数据操作生命周期的重要组成部分,数据可观察性解决方案必须易于跨多个数据环境实施和部署。”
对于许多大型企业而言,可靠的数据管道和应用程序并不容易实施。 Mphasis 首席解决方案官 Ramanathan Srikumar 表示:“即使有了此类可观察性平台的帮助,大型企业的团队也难以抢先预防许多事件。” “一个关键问题是,数据无法充分洞察流经多个云和遗留环境的交易。”
Teradata 的首席产品官 Hillary Ashton 对此表示赞同。 “现代数据生态系统本质上是分布式的,这就造成了在整个生命周期中管理数据健康的艰巨任务。”
然后她分享了底线:“如果你不相信你的数据,你永远不会成为数据驱动的。”
Ashton 建议,“对于高度可靠的数据管道,公司需要一个 360 度视图,通过查看遥测数据来集成运营、技术和业务元数据。该视图允许识别和纠正问题,例如数据新鲜度、缺失记录、模式更改和未知错误。在流程中嵌入机器学习也可以帮助自动化这些任务。”
在使用 Unix 命令解析日志文件以解决数据集成问题方面,我们已经走了很长一段路。今天的数据观察工具要复杂得多,但为企业提供可靠的数据管道和高质量的数据处理仍然是许多组织面临的挑战。接受挑战并与业务领导者合作进行敏捷和增量实施,因为基于不可信数据构建的数据可视化和 ML 模型可能会导致错误且可能有害的决策。

作者 east
mysql 4月 1,2023

Oracle 为 MySQL HeatWave 添加了机器学习特性

甲骨文正在为其数据分析云服务 MySQL HeatWave 添加新的机器学习功能。
MySQL HeatWave 在单个 MySQL 数据库中结合了 OLAP(在线分析处理)、OLTP(在线事务处理)、机器学习和 AI 驱动的自动化。
该公司在周四宣布更新时表示,新的机器学习功能将被添加到该服务的 AutoML 和 MySQL Autopilot 组件中。
虽然 AutoML 允许开发人员和数据分析师在 MySQL HeatWave 中构建、训练和部署机器学习模型,而无需转移到单独的机器学习服务,但 MySQL Autopilot 为 HeatWave 和 OLTP 提供了基于机器学习的自动化,例如自动配置、自动编码、自动查询计划、自动形状预测和自动数据放置等功能。
甲骨文表示,AutoML 添加的基于机器学习的新功能包括多变量时间序列预测、无监督异常检测和推荐系统,并补充说所有新功能都已普遍可用。
“多变量时间序列预测可以预测多个按时间排序的变量,其中每个变量都取决于其过去值和其他因变量的过去值。例如,考虑到用于发电的各种能源,它被用来建立预测模型来预测冬季的电力需求,”甲骨文研究高级副总裁 Nipun Agarwal 说。
与让受过时间序列分析或预测培训的统计学家为所需输出选择正确算法的常规做法相比,AutoML 的多变量时间序列预测会自动预处理数据以选择 ML 模型的最佳算法并自动调整模型,公司说。
“HeatWave AutoML 自动预测管道使用了一项专利技术,该技术由高级时间序列预处理、算法选择和超参数调整等阶段组成,”Agarwal 说,并补充说这种自动化可以帮助企业节省时间和精力,因为他们不需要有训练有素的统计人员。
根据 Constellation Research 首席分析师 Holger Muller 的说法,多变量时间序列预测功能是 Oracle 的 MySQL HeatWave 所独有的。
“时间序列预测,多变量或其他方式,目前不作为提供机器学习增强分析的单一数据库的一部分提供。例如,AWS 为时间序列提供了一个单独的数据库,”Muller 说。
除了多变量时间序列预测,Oracle 还在 MySQL HeatWave 中添加了基于机器学习的“无监督”异常检测。
该公司表示,与使用特定算法检测数据中特定异常的做法相比,AutoML 可以从未标记的数据集中检测不同类型的异常,并补充说,当企业用户不知道异常类型是什么时,该功能可以帮助他们数据集。
“HeatWave AutoML 生成的模型为所有类型的异常(本地、集群和全局)提供了高精度。该过程是完全自动化的,数据分析师无需手动确定要使用的算法、要选择的功能以及超参数的最佳值,”Agarwal 说。
此外,AutoML 添加了一个推荐引擎,它称之为推荐系统,支持 MySQL HeatWave 中算法选择、特征选择和超参数优化的自动化。
“使用 MySQL HeatWave,用户可以调用 ML_TRAIN 过程,该过程会自动训练模型,然后存储在 MODEL_CATALOG 中。要预测推荐,用户可以调用 ML_PREDICT_ROW 或 ML_PREDICT_TABLE,”Agarwal 说。
此外,甲骨文还在 HeatWave 中为业务用户添加了一个交互式控制台。
“新的交互式控制台允许业务分析师使用可视化界面构建、训练、运行和解释 ML 模型——无需使用 SQL 命令或任何编码,”Agarwal 说,并补充说该控制台使业务用户更容易探索条件场景他们的企业。
“添加交互式控制台符合企业试图让机器学习负责的做法。该控制台将帮助商业用户深入池中,因为他们希望发展成为‘公民数据科学家’,以避免陷入过多的困境,”dbInsight 首席分析师 Tony Baer 说。
该控制台最初可用于 AWS 上的 MySQL HeatWave。
甲骨文还表示,它将为 AWS 上的 HeatWave 添加对 Amazon S3 存储的支持,以降低成本并提高服务的可用性。
“当数据从 MySQL(InnoDB 存储引擎)加载到 HeatWave 时,会向构建在 S3 上的横向扩展数据管理层制作一份副本。当操作需要将数据重新加载到 HeatWave 时,例如在错误恢复期间,多个 HeatWave 节点可以并行访问数据,并且数据可以直接加载到 HeatWave 中,无需任何转换,”Agarwal 说。
添加到 MySQL HeatWave 的新功能包括 MySQL Autopilot 的两个新增功能——自动形状预测顾问与交互式控制台的集成和自动卸载。
“在交互式控制台中,数据库用户现在可以访问 MySQL Autopilot 自动形状预测顾问,该顾问会持续监控 OLTP 工作负载,以在任何给定时间推荐正确的计算形状并提供解释——让客户始终获得最佳性价比,”阿加瓦尔说。
据该公司称,自动卸载功能可以根据工作负载历史推荐要卸载的表。
“释放内存可以减少运行工作负载所需的集群大小并节省成本,”Agarwal 说,并补充说这两个功能都已普遍可用。
Oracle 正在提供更小形状的 HeatWave,以吸引数据量更小的客户。
该公司表示,与早期标准 HeatWave 节点的 512GB 大小相比,较小的形状将具有 32GB 的大小,能够以每月 16 美元的价格处理高达 50GB 的数据。
此外,该公司表示,其标准 512GB HeatWave Node 的数据处理能力已从 800GB 增加到 1TB。
“随着这一增长和其他查询性能的改进,HeatWave 的性价比优势进一步提高了 15%,”Agarwal 说。

作者 east
大数据开发 3月 31,2023

数据科学的冰山一角

数据科学远不止是当今商业世界的一个时髦流行语,它正在重新定义公司与客户互动的方式。
无论是哪个行业——零售、保险、制造、银行、旅游——每个大企业都有自己处理数据科学的方式。他们必须。数据无处不在。这是新的黄金,挖掘这些数据对于任何企业的成败都至关重要。
数据提供了对区分竞争对手的信息的访问。数据驱动的公司为客户提供更好的服务并做出更好的决策——所有这些都是因为这些决策有数据支持。
数据科学是商业世界的下一个演变,那些不能适应这一新现实的将不复存在。另一种选择是灭绝。
这就是一家欧洲时装和服装零售连锁店面临的命运。成立于 1980 年代初,它以以客户为中心的高档面对面购物体验为基础。在线零售商的出现和激增对其业务造成了重大打击。当它的实体店开始挣扎时,这家店本可以认命,搬进历史的垃圾箱。
相反,它拥抱了数字化。
该公司将积极的客户体验作为重点,计划进行全渠道数字化转型,以管理客户、收集数据并提供客户所需的产品和服务。
它始于电子商务渠道的推出和 CRM 系统的构建,以通过忠诚度计划管理客户和收集数据。为了保持以客户为中心的商业精神,他们专注于开发专门的创新能力,以确保为消费者提供他们想要的产品和服务。最后,他们转向数字化客户流程并优化客户旅程。
如今,这家时尚零售商保留其实体店,让购物者能够看到和体验其提供的系列。在线商店被用作与部分客户互动并了解他们需要和想要什么的沟通渠道。
为了维持这种新方法,创建了八个数字团队,并且对所有可以衡量的东西进行了衡量。这种数字化转型使企业能够将其 90% 的收入追溯到最终客户。
对于尚未涉足数据科学游戏或在该领域迈出第一步的公司,第一个也是最重要的建议是要谦虚,承认这不是你一个人可以做的事情,并齐心协力专业团队。
数据科学是一个复杂的领域,要正确使用它,需要工程师、科学家和分析师开发人工智能平台,以识别、收集、评估和利用数据,以发挥最大优势。他们可以制定战略,确定所需数据的类型、收集数据的最佳方法、收集信息所需的系统以及如何确保数据干净和可用以便将其货币化。
该团队还可以开发支持数据捕获和收集所需的基础设施,包括 AI 或机器学习平台以及用于大计算机存储容量的云平台。
云平台是关键。它支持快速部署数据,并大大缩短了获得对企业及其客户的宝贵见解所需的时间。分析工程师可以构建可靠的数据管道,实现自助报告和可视化。
但是查看数百万个接触点并试图弄清楚如何从中提取有意义的信息可能是一项艰巨的任务。数据驱动不仅仅意味着解锁数据、存储数据并让每个人都可以访问。它是关于从收集到的信息中提取见解,以预测未来的见解,建议短期、中期和长期的投资方向,减少客户流失,预测需求,优化物流链或自动化业务流程。
在最有用的时候,数据科学会从大型数据集中提取不明显的模式,例如购买、预订、索赔或银行交易,以帮助企业做出更好的决策。
了解您的客户是任何企业的基本原则,客户购买模式的历史数据不仅是最常见和最容易访问的数据集,也是最重要的数据集之一。它可以预测未来的需求,并提供有价值的洞察力来影响未来的消费者选择。
客户关系管理 (CRM) 系统是有效使用数据科学的良好起点。零售商可以使用这些数据来识别具有相似行为和品味的客户群体,还可以更好地了解经常一起购买的产品。
北美领先的服装制造商之一,拥有令人自豪的 150 年历史,多年来建立了生产能力,扩大了销售网络,并投资于营销。但也许它今天最重要的举措是它的数据科学分析。数据科学部门直接向 CEO 报告,并与谷歌平台上的海量数据合作,以更有效地吸引客户。
在 COVID 大流行期间,随着越来越多的服装购物者被推到网上,公司的数据科学部门蓬勃发展,改善了公司的数字足迹,以收集尽可能多的消费者数据——谁在网上购物,谁在实体店购物,他们正在检查什么在网上,他们花了多少钱,他们如何支付他们的购买,他们最终购买了什么——并使用所有这些信息来创建配置文件和跟踪模式。
然后通过直接针对符合这些概况的消费者的营销活动将数据货币化。
随着数据科学的进步,客户交互变得更加个性化。重点不再是建立关于群体、特定市场或地区的广泛概况,而是越来越注重个人。
流媒体服务使用数据来改善用户体验。他们向观众推荐他们的算法确定个人可能喜欢的标题。简单的假设是,这只是基于观众之前可能观看过的内容。例如,因为您喜欢这部由汤姆·克鲁斯主演的动作片,也许您也会喜欢这部由汤姆·克鲁斯主演的另一部动作片。
然而,它比这复杂得多。流媒体将从通过分析来自世界各地的大量用户数据构建的原型配置文件开始。然后它将采用个人的观看模式(标题、流派、演员、季节性),将它们与来自世界各地的该个人资料中的其他人以及他们正在观看的内容交织在一起,以提出建议。
旅游和酒店业依靠数据科学帮助其从大流行中恢复过来。
几乎没有企业能幸免于大流行的负面影响,但旅游业却遭受重创。在大流行之前,全球机场运营市场的价值估计为 2210 亿美元。在大流行迫使边境关闭并几乎关闭了休闲航空旅行之后,这一数字暴跌至 946 亿美元。 2021 年略有改善,达到 1302 亿美元,但仍远未达到他们想要的水平。
面临的挑战是开发和实施数据驱动的解决方案,以更新收入流、优先考虑公共卫生、增强客户体验并支持可持续发展计划。
在提高运营效率的同时关注客户体验比以往任何时候都更加重要,预计将在未改变的财务目标参数范围内完成。
世界上最大的航空公司之一正在使用数据科学来预测与延误和取消的投诉和索赔相关的成本。这帮助航空公司解决了运营中断问题并提高了客户满意度。它还能够开发和推出新的解决方案,以改进在线支付方式、启动绩效警报系统以及优化维护资金的使用。
从客户服务到货运,该航空公司现在已经制定了收集和分析信息和开发新想法的流程,并对内部数据分析有了更深入的了解。
我们只站在数据科学冰山一角。数据科学已经是成功企业的重要组成部分,其用途将成倍增加。用不了多久,所有交易系统——购买、预订、银行业务——都将在工作流程中嵌入人工智能。数据分析将部署在每个企业的每个应用程序中。没有它,任何组织都无法在大量投资于数据分析的竞争中生存下来。

作者 east
大数据开发 3月 31,2023

为什么开发人员使用 Confluent 来管理 Apache Kafka

想象一下,您正在领取食品杂货,或者正在寻找关于接下来要在电视上看什么的推荐,或者正在使用信用卡而不用太担心欺诈。为这些交互提供支持的应用程序都依赖于动态数据,而且 Apache Kafka 很有可能为这些应用程序提供支持。
超过 80% 的财富 100 强企业使用 Kafka 作为事件流底层,为实时、面向用户的应用程序和软件驱动的后端提供支持。 Kafka 已成为任何希望通过不可变事件日志而不是可变数据存储来集成日益多样化的应用程序和微服务组合的组织的首选。好处是多方面的,但请记住,Kafka 是一个分布式系统,自愿自己操作分布式系统是一个越来越有争议的选择。
这就是云存在的原因。通过完全托管的云服务,供应商承担资本支出并积累良好运行基础架构所需的运营专业知识。 Confluent 是市场上第一个完全托管的 Kafka 服务,让您专注于构建应用程序和为业务增加价值,而不是在操作复杂的基础设施层上转动拨号盘。我想向您介绍一下 Confluent 如何为使用 Kafka 的人们的生活带来和平与简单。
对应用程序功能的需求总是大于交付它的能力。这意味着应用程序团队应该专注于创造他们可能创造的最大价值的活动。通常,这意味着提供可直接为客户和用户带来竞争优势的新功能。
当然,所有应用程序都需要存储和计算基础架构才能在持续开发和维护中发挥作用,从而分散了对创造价值的功能开发的注意力。对于 Kafka 来说尤其如此,因为分布式数据基础设施给决定自己操作它的团队带来了巨大的机会成本。简而言之:您的工作最终是照顾好您的客户。虽然运行 Kafka 可能是达到此目的的一种方法,但它可能不是完成工作的最实用方法。这一挑战是导致托管云服务兴起的众多原因之一。
弹性可扩展性一直是云神话的固有部分,但在实现过程中进展缓慢。在云历史的早期,数据库创新者应用新方法来实现海量数据集的水平弹性可扩展性。最近,微服务和容器编排帮助大众实现了应用程序的可扩展性。然而,众所周知,数据基础架构一直难以轻松扩展。
Kafka 有一个出色的水平扩展故事:主题被分区,单独的分区日志被分配给不同的代理,然后由可扩展的客户端应用程序集群使用。有一些可编写脚本的工具可以管理这些面向规模的功能,但自我管理的集群仍然需要大量的操作和技术专业知识。例如,随着集群随时间的变化,分区日志不会均匀分布在代理上。此外,随着业务条件的发展,还会添加新主题,并且分区可能会收到不均衡的读写流量。随着时间的推移,这只是集群管理员必须注意的事情之一。
Confluent 具有内置的弹性可扩展性。集群吞吐量从 0 扩展到 100MBps,无需干预,通过一个简单的 Web UI 可达到 11GBps(撰写本文时的当前记录)——无需移动分区,无需重新平衡代理。随着世界慢慢赶上云最初的弹性规模承诺,Confluent 以真正的云原生方式为数据基础设施带来规模。
无论如何,您的生活将是多云的,因此数据基础架构层需要具有多云能力才能成为有力的竞争者。 Confluent 是多云,原生支持 AWS、Microsoft Azure 和 Google Cloud。当您需要在多个云上运行,或者至少能够威胁到时,这种灵活性是必不可少的。 Confluent 通过使用单一的管理 Web UI 和从特定云基础设施中抽象出来的统一控制平面,使这一切变得简单。
但多云并不总是足够的!有时您不想将所有内容都移动到云端。许多公司希望混合使用本地、私有云或公共云服务。这种混合云体验是 Confluent 的首要考虑因素,可以通过 Confluent UI 维护备份服务、隔离产品和管理复杂的 B 计划。
正如 Kafka 社区在其诞生 10 年中所发现的那样,要构建成功的事件驱动系统,您需要的不仅仅是分布式日志。您还需要在所有系统和流之间建立可靠且安全的连接,这绝非易事。然后你就可以开始通过实时流处理从整个系统中提取价值。
围绕核心 Kafka 功能出现了几个组件,以帮助满足来自开源生态系统和 Confluent 的这些需求:
这些组件的事实是团队最终将需要它们。正是出于这个原因,他们从 Kafka 社区和 Confluent 中脱颖而出。几乎不可能精通这些领域中的每一个领域来构建不需要持续关注即可平稳运行的解决方案。
借助 Confluent,您可以轻松获得使用 Kafka 取得成功所需的所有工具。您可以使用一个平台,您需要的一切都以无缝、集成的方式提供,包括数百个连接到流行数据源的连接器。
Kafka 有一个最小可行的安全故事:它提供强大的动态数据加密和基于 ACL 的身份验证和授权作为选项。 Confluent 以企业期望的方式扩展了这些功能。
例如,Confluent 中的所有数据在静态和动态中都是加密的。最重要的是,应用程序还需要对每次调用进行身份验证,从而消除意外拥有“完全开放”端口的威胁。
Confluent 的各种其他功能有助于简化安全性,包括基于 SAML 的单点登录和对 VPC 中其他云资源的安全访问。
作为这些安全功能的证明,Confluent 符合许多行业标准和认证成就,符合 PCI、HIPAA 和 GDPR 以及 SOC1、SOC2、SOC3 和 ISO 27001 认证的要求。
在获得所有这些认证的同时还提供许多其他开箱即用的安全和方便的功能是一项挑战。开发人员可以放心地构建,同时将繁重的安全提升留给托管平台。
但不要只相信我的话。您可以通过 Confluent 或您选择的云提供商免费试用我们完全托管的 Kafka 服务。
Tim Berglund 是 Confluent 的开发者宣传高级总监。

作者 east
chatgpt 3月 30,2023

利用ChatGPT不到10分钟生成一个网页工具

作为一个程序员,经常需要用到一些在线网页工具,例如时间戳转换,json格式转换。一直想做这类的工具,但苦于自己对网页开发不熟悉。

想到了ChatGPT,开始试试神奇生成代码之旅。

问ChatGPT:

设计一个在线时间戳的页面

ChatGPT答:

可以使用HTML、CSS和JavaScript编写一个简单的在线时间戳页面,如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>Online Timestamp</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
        }
        h1 {
            margin-top: 50px;
        }
        input {
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 250px;
        }
        button {
            background-color: #4CAF50;
            color: white;
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            cursor: pointer;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 100px;
        }
    </style>
</head>
<body>
    <h1>Online Timestamp</h1>
    <input type="text" id="timestamp" placeholder="Enter timestamp">
    <button onclick="convertTimestamp()">Convert</button>
    <p id="result"></p>

    <script>
        function convertTimestamp() {
            var timestamp = document.getElementById("timestamp").value;
            var date = new Date(timestamp * 1000);
            var year = date.getFullYear();
            var month = ("0" + (date.getMonth() + 1)).slice(-2);
            var day = ("0" + date.getDate()).slice(-2);
            var hours = ("0" + date.getHours()).slice(-2);
            var minutes = ("0" + date.getMinutes()).slice(-2);
            var seconds = ("0" + date.getSeconds()).slice(-2);
            var formattedDate = day + "/" + month + "/" + year;
            var formattedTime = hours + ":" + minutes + ":" + seconds;
            document.getElementById("result").innerHTML = formattedDate + " " + formattedTime;
        }
    </script>
</body>
</html>

该页面包括一个标题、一个输入框和一个按钮。用户可以在输入框中输入UNIX时间戳(自1970年1月1日以来的秒数),然后单击按钮将其转换为日期和时间,并将结果显示在页面上。JavaScript代码使用Date对象将时间戳转换为日期和时间,并格式化输出。HTML和CSS代码则用于构建页面布局和样式。

觉得功能太简单,又对ChatGPT下达命令:

追问ChatGPT:

再加一个功能,需要把输入标准时间,例如2023-03-30 14:00:00的时间转换成时间戳

ChatGPT答:

可以在现有的时间戳转换页面上添加一个额外的输入框和按钮,以便用户可以将标准时间转换为时间戳。以下是修改后的代码:

<!DOCTYPE html>
<html>
<head>
    <title>Online Timestamp</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
        }
        h1 {
            margin-top: 50px;
        }
        input {
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 250px;
        }
        button {
            background-color: #4CAF50;
            color: white;
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            cursor: pointer;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 100px;
        }
    </style>
</head>
<body>
    <h1>Online Timestamp</h1>
    <input type="text" id="timestamp" placeholder="Enter timestamp">
    <button onclick="convertTimestamp()">Convert to Date and Time</button>
    <p id="result"></p>

    <input type="datetime-local" id="datetime" placeholder="Enter date and time">
    <button onclick="convertDateTime()">Convert to Timestamp</button>
    <p id="result2"></p>

    <script>
        function convertTimestamp() {
            var timestamp = document.getElementById("timestamp").value;
            var date = new Date(timestamp * 1000);
            var year = date.getFullYear();
            var month = ("0" + (date.getMonth() + 1)).slice(-2);
            var day = ("0" + date.getDate()).slice(-2);
            var hours = ("0" + date.getHours()).slice(-2);
            var minutes = ("0" + date.getMinutes()).slice(-2);
            var seconds = ("0" + date.getSeconds()).slice(-2);
            var formattedDate = day + "/" + month + "/" + year;
            var formattedTime = hours + ":" + minutes + ":" + seconds;
            document.getElementById("result").innerHTML = formattedDate + " " + formattedTime;
        }

        function convertDateTime() {
            var datetime = document.getElementById("datetime").value;
            var date = new Date(datetime);
            var timestamp = Math.round(date.getTime() / 1000);
            document.getElementById("result2").innerHTML = timestamp;
        }
    </script>
</body>
</html>

还是觉得美中不足,又对ChatGPT下达命令:

追问ChatGPT:增加一个功能,显示当前东八区的时间

ChatGPT答:

可以使用JavaScript获取当前的日期和时间,并将其转换为东八区的时间。以下是修改后的代码:

<!DOCTYPE html>
<html>
<head>
    <title>Online Timestamp</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
        }
        h1 {
            margin-top: 50px;
        }
        input {
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 250px;
        }
        button {
            background-color: #4CAF50;
            color: white;
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: none;
            cursor: pointer;
            box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
            margin-top: 20px;
            width: 100px;
        }
    </style>
</head>
<body>
    <h1>Online Timestamp</h1>
    <input type="text" id="timestamp" placeholder="Enter timestamp">
    <button onclick="convertTimestamp()">Convert to Date and Time</button>
    <p id="result"></p>

    <input type="datetime-local" id="datetime" placeholder="Enter date and time">
    <button onclick="convertDateTime()">Convert to Timestamp</button>
    <p id="result2"></p>

    <h2>Current Time in GMT+8:</h2>
    <p id="current-time"></p>

    <script>
        function convertTimestamp() {
            var timestamp = document.getElementById("timestamp").value;
            var date = new Date(timestamp * 1000);
            var year = date.getFullYear();
            var month = ("0" + (date.getMonth() + 1)).slice(-2);
            var day = ("0" + date.getDate()).slice(-2);
            var hours = ("0" + date.getHours()).slice(-2);
            var minutes = ("0" + date.getMinutes()).slice(-2);
            var seconds = ("0" + date.getSeconds()).slice(-2);
            var formattedDate = day + "/" + month + "/" + year;
            var formattedTime = hours + ":" + minutes + ":" + seconds;
            document.getElementById("result").innerHTML = formattedDate + " " + formattedTime;
        }

        function convertDateTime() {
            var datetime = document.getElementById("datetime").value;
            var date = new Date(datetime);
            var timestamp = Math.round(date.getTime() / 1000);
            document.getElementById("result2").innerHTML = timestamp;
        }

        function getCurrentTime() {
            var now = new Date();
            var utcOffset = now.getTimezoneOffset();
            var gmt8Offset = -480; // GMT+8 offset in minutes
            var localOffset = utcOffset - gmt8Offset;
            now.setMinutes(now.getMinutes() + localOffset);
            return now;
        }

        var currentTime = getCurrentTime();
        var year = currentTime.getFullYear();
        var month = ("0" + (currentTime.getMonth() + 1)).slice(-2);
        var day = ("0" + currentTime.getDate()).slice(-2);
        var hours = ("0" + currentTime.getHours()).slice(-2);
        var minutes = ("0" + currentTime.getMinutes()).slice(-2);
        var seconds = ("0" + currentTime.getSeconds()).slice(-2);
        var formattedTime = day + "/" + month + "/" + year + " " + hours + ":" + minutes + ":" + seconds;
        document.getElementById("current-time").innerHTML = formattedTime;
        setInterval(function() {
            currentTime = getCurrentTime();
            year = currentTime.getFullYear();
            month = ("0" + (currentTime.getMonth() + 1)).slice(-2);
            day = ("0" + currentTime.getDate()).slice(-2);
            hours = ("0" + currentTime.getHours()).slice(-2);
            minutes = ("0" + currentTime.getMinutes()).slice(-2);
            seconds = ("0" + currentTime.getSeconds()).slice(-2);
            formattedTime = day + "/" + month + "/" + year + " " + hours + ":" + minutes + ":" + seconds;
            document.getElementById("current-time").innerHTML = formattedTime;
        }, 1000); // update time every second
    </script>
</body>
</html>

最终生成工具如下:

借助ChatGPT,不到10分钟就基本初步达到自己想要的效果。如果自己看工具书编写,或者通过传统的搜索引擎,不顺利时可能要几个小时才做出来。

作者 east
大数据开发 3月 30,2023

云和大型计算如何重塑 HPC

大约 25 年前,一些开源技术结合起来形成了一个强大的商业互联网,它终于准备好开展业务并拿走你的钱了。这种开源组合被称为 LAMP 堆栈(Linux、Apache HTTP Server、MySQL 和 PHP/Perl/Python),成为一代开发人员的标准开发堆栈。
现在别看,但我们很可能正处于另一个 LAMP 堆栈时刻的风口浪尖。
然而,这一次的重点不是建立一种新的在线方式来兜售狗粮。取而代之的是,一场新技术复兴正在进行,以解决算法复杂、消耗大量计算资源的大规模工作负载。想想为 COVID-19 接种疫苗、建造新的超音速喷气式飞机或驾驶自动驾驶汽车。科学和工程界正在以前所未有的令人眼花缭乱的速度更快地发展和提供更新的创新。
如何?云。但不仅仅是云。
云对于正在发生的事情的描述可能过于简单。对于这种转变,我们缺乏巧妙的简写,例如互联网的 LAMP 堆栈。有些东西突然解放了博士类型,可以在极其复杂的计算引擎上进行创新,为算法驱动的工作负载提供动力,这些工作负载正在以比早期 Friendster 或 Pets.com 承诺提供的方式更深刻的方式改变我们的生活。
“高性能计算”(HPC) 是与这些工作负载相关的最常见标签。但那是在公共云成为这些新应用程序的可行平台之前。浏览世界上最快的超级计算机 500 强榜单,您会看到越来越多的超级计算机基于公有云。这并非巧合:本地超级计算机和大型 Linux 集群已经存在了几十年(在商业互联网之前),但这种新趋势——有时被称为“大计算”或“深度技术”——在很大程度上依赖于云。
正如咨询公司 BCG 所说,“计算能力的增强和成本的下降以及技术平台的兴起是最重要的贡献者。云计算正在稳步提高性能并扩大使用范围。”
但这个新的“堆栈”不仅仅与云有关。相反,它取决于技术的三大趋势:仿真软件、专用硬件和云的广度和深度迅速增加。这些是当今每个快速发展的研究和科学团队都在利用的技术构建模块,也是为什么出现了数百家初创公司来撼动十年或更长时间前整合的长期垂死行业的原因。
就像 LAMP 堆栈的神奇时刻一样,今天的重要计算/深度技术时刻都是为了提高工程生产力。云对此至关重要,尽管它本身还不够。
以航空航天为例。传统上,航空工程师会依赖本地 HPC 集群来模拟与起飞和着陆相关的所有必要变量,以设计新的超音速喷气式飞机。相比之下,初创航空航天公司直接采用了云计算,其弹性基础架构使他们能够对应用程序进行建模和模拟,而无需在同事后面排队等待高度专业化的 HPC 硬件。构建和维护硬件的时间更少。更多时间进行实验和工程设计。这就是大型计算云方法的美妙之处。
将其与各种模拟软件相结合,可以在实际构建和原型化复杂的物理事物之前对新的创新进行建模。随着摩尔定律耗尽,专用硬件为这些算法复杂的模拟提供动力。云越狱了本地超级计算机和集群的所有这些,使得创建和运行模型、迭代和改进以及在移动到物理原型之前再次运行它们变得容易了一个数量级。 (要明确的是,这种大型计算/深度技术的大部分是关于构建物理事物,而不是软件。)
这个领域的棘手之处在于使它们运行所需的自定义硬件和软件配置以及优化其性能所需的复杂工作流程。这些类型的算法密集型工作负载需要越来越专业的 GPU 和其他更新的芯片架构。正在支付昂贵的博士学位以设计下一个伟大的涡轮机或喷气推进秘方的公司不希望通过强迫他们学习如何使用模拟软件和硬件组合来建立机器来让他们陷入困境。
“15 年前,这个 HPC 领域的任何公司都根据其在本地运行硬件的程度来脱颖而出,并且基本上押注摩尔定律将继续在 x86 架构上逐年提供持续更好的性能,”Joris 说Rescale 首席执行官 Poort 在接受采访时表示。 “如今最重要的是速度和灵活性——确保您的博士在他们的工作中使用最好的模拟软件,使他们免于成为专业大型计算基础设施的专家,这样他们就可以更快地推出新的创新。”
每家公司最终都会在云中使用模拟和专用硬件吗?可能不会。今天,这是火箭、推进、计算生物学、运输系统以及世界上 1% 最难计算挑战的领域。但是,尽管大型计算被用来解决当今最令人讨厌的问题,但我们肯定会看到新一波 Netflix 使用云、模拟软件和专用硬件的这种 LAMP 堆栈组合推翻世界大片。

作者 east
大数据开发 3月 29,2023

Databricks 开源其 Delta Lake 数据湖屋

为了消除数据湖和数据仓库竞争对手的疑虑,Databricks 周二表示,作为 Delta Lake 2.0 版本的一部分,它正在开源所有 Delta Lake API。该公司还宣布将把 Delta Lake 的所有增强功能贡献给 Linux 基金会。
Cloudera、Dremio、谷歌(Big Lake)、微软、甲骨文、SAP、AWS Snowflake、HPE(Ezmeral)和Vertica等Databricks竞争对手对该公司提出批评,质疑Delta Lake是开源还是专有,从而抢走了份额潜在客户,分析师说。
Ventana Research 研究总监 Matt Aslett 表示:“新公告应该为用户提供连续性和清晰度,并有助于消除关于 Delta Lake 是专有还是开源的混淆(部分是由竞争对手引起的)。”
Constellation Research 首席分析师 Doug Henschen 表示,通过这些公告,Databricks 正在平息客户的担忧和竞争批评。
“在竞争性交易中,像 Snowflake 这样的竞争对手会向潜在客户指出 Delta Lake 的某些方面是专有的,”Henschen 说,并补充说 Databricks 客户现在可以相信他们的数据在一个开放平台上,而不是锁定在三角洲湖中。
Databricks 将 Delta Lake 称为数据湖屋,这是一种同时提供存储和分析功能的数据架构,与以本机格式存储数据的数据湖和存储结构化数据(通常以 SQL 格式)的数据仓库的概念形成对比).
随着数据湖市场上越来越多的商业开源项目,Databricks 的 Delta Lake 可能会发现自己面临新的竞争,包括 Apache Iceberg,它为超大的分析表提供高性能查询。
“还有最近开始商业化的开源项目,例如 Apache Hudi 的 OneHouse 以及 Starburst 和 Dremio 都推出了 Apache Iceberg 产品,”Amalgam Insights 首席分析师 Hyoun Park 说。
“随着这些产品的推出,Delta Lake 面临着来自其他开源 lakehouse 格式的压力,要求它在功能上变得更加强大,因为 lakehouse 市场开始分裂,技术人员有多种选择,”Park 补充道。
Ventana 的 Aslett 说,这个领域的许多其他参与者都专注于 Apache Iceberg 作为 Delta Lake 表的替代品。与在行和列中存储数据的传统表相比,增量表可以访问 ACID(原子性、一致性、隔离性和持久性)事务来存储元数据,以帮助加快数据摄取。
4 月,谷歌宣布支持 Big Lake 和 Iceberg,本月早些时候,Snowflake 宣布在私人预览版中支持 Apache Iceberg 表。
Henschen 说,Iceberg 的公告,就像 Databricks 的开源战略一样,旨在吸引潜在客户,他们可能担心只与一家供应商合作,并且担心在未来访问自己的数据会受到阻碍。
Gartner 前研究副总裁 Sanjeev Mohan 表示,面对新的竞争,Databricks 转向开源 Delta Lake 是一个很好的举措。
“Databricks 宣布开源 Delta Lake 的全部功能是推动更广泛采用的极好一步,”Gartner 前大数据和分析研究副总裁 Sanjeev Mohan 说。
该公司表示,Databricks 的 Delta Lake 2.0 将于今年晚些时候全面上市,预计将为数据分析提供更快的查询性能。
Databricks 周二还发布了第二版 MLflow——一个用于管理端到端机器学习生命周期 (MLOps) 的开源平台。
MLflow 2.0 附带 MLflow Pipelines,它根据数据科学家正在构建的模型类型为数据科学家提供预定义的、生产就绪的模板,使他们能够加速模型开发,而无需生产工程师的干预,该公司表示。
据分析师称,MLflow 2.0 将成为数据科学家的一个更成熟的选择,因为机器学习生产仍然是一个具有挑战性的过程,并且将算法模型转换为安全管理资源上的生产级应用程序代码仍然很困难。
“这个领域有许多供应商解决方案,包括 Amazon Sagemaker、Azure Machine Learning、Google Cloud AI、Datarobot、Domino Data、Dataiku 和 Iguazio。但与超大规模计算器和 Databricks 的统一方法相比,Databricks 是一个中立的供应商数据和模型管理是 MLOps 供应商的一个差异化因素,后者专注于模型操作化的编码和生产挑战,”Amalgam 的 Park 说。
Henschen 说,发布 MLflow 2.0 的举措简化了将流媒体和流媒体分析引入生产数据管道的途径,并补充说许多公司都在与 MLOps 作斗争,甚至在成功创建机器学习模型后也失败了。

作者 east
大数据开发 3月 29,2023

什么是数据湖?用于大数据分析的大规模可扩展存储

2011 年,时任商业智能公司 Pentaho 首席技术官的 James Dixon 创造了数据湖一词。他将数据湖与当时流行的数据集市典型的信息孤岛进行了对比:
从那时起,数据湖不断发展,现在与数据仓库竞争大数据存储和分析的份额。各种工具和产品支持在数据湖中进行更快的 SQL 查询,所有三大云提供商都提供数据湖存储和分析。甚至还有新的 Data Lakehouse 概念,它将治理、安全和分析与负担得起的存储相结合。本文深入探讨了数据湖,包括它们是什么、如何使用以及如何确保您的数据湖不会变成数据沼泽。
数据湖本质上是一个单一的数据存储库,它保存您的所有数据,直到它准备好进行分析,或者可能只保存不适合您的数据仓库的数据。通常,数据湖以其本机文件格式存储数据,但数据可能会转换为另一种格式以提高分析效率。拥有数据湖的目标是从数据中提取业务或其他分析价值。
数据湖可以托管图像和视频等二进制数据、PDF 文档等非结构化数据、CSV 和 JSON 文件等半结构化数据,以及通常来自关系数据库的结构化数据。结构化数据对分析更有用,但半结构化数据可以很容易地导入到结构化形式中。通常可以使用智能自动化将非结构化数据转换为结构化数据。
问题不在于您是否需要数据湖或数据仓库;您很可能需要两者,但出于不同的目的。也可以将它们结合起来,我们将很快讨论。首先,让我们看看数据湖和数据仓库之间的主要区别:
数据集市是仅限于来自单个部门或业务单位的数据的分析数据库,与数据仓库相反,数据仓库以适合分析的形式组合了公司的所有关系数据。数据集市通过仅包含与部门相关的数据来提供有效的分析;因此,它们本质上是孤立的。一些人声称孤岛并不重要,因为业务部门不需要被排除的数据。在现实生活中,这通常很重要——总有上级需要基于来自多个业务部门的综合数据的报告。这就是为什么我们目前看到很多数据湖和数据仓库,而很少有数据集市的原因之一。
当您将原始数据存储在数据湖中时,在数据工程师或数据科学家对其进行处理之前,数据可能对业务分析师毫无用处。除了过滤和数据转换之外,数据湖还需要数据目录、数据安全和模式定义。不幸的是,没有这些功能的数据湖的简写术语是数据沼泽。
幸运的是,有很多工具可以帮助过滤和组织数据湖中的数据。例如,您可以通过创建 ORC 格式的 Hive 元存储来解决对架构的需求。设置完成后,元存储通过像 Presto 这样的大规模并行 SQL 引擎支持快速 SQL 查询。 (Optimized Row Columnar 格式是一种压缩的列式存储,针对 Hive 进行了优化,并且可以很好地与 Presto 配合使用。)
Apache Spark 是另一个大规模并行 SQL 引擎。虽然它可以与 ORC 格式一起使用,但它与另一种压缩的列式存储 Parquet 一起使用时效果更好。 Spark 可以对 Parquet 文件执行垂直和水平分区,生成只需要读取必要数据并可以跳过不相关数据的查询计划。
Databricks 是 Spark 和 MLflow 背后的公司,提供他们所谓的数据湖屋。根据 Databricks 的说法,lakehouse 结合了数据仓库和数据湖的最佳特性:
Databricks 开源的 Delta Lake 通过直接对数据湖中的数据提供可靠性和高性能构成了 Lakehouse 的基础。 Databricks Lakehouse Platform 还包括 Unity Catalog,它为数据和 AI 提供细粒度的治理。 Databricks 声称其 Data Lakehouse 提供的性价比是数据仓库的 12 倍。
过去,数据湖是使用商用计算机的 Apache Hadoop 集群和 HDFS(Hadoop 分布式文件系统)在本地实施的。 Hadoop 集群曾经是 Cloudera、Hortonworks 等公司的大生意。 Cloudera 和 Hortonworks 在 2018 年合并,这告诉你一些关于市场方向的信息。
发生变化的是云,特别是超大规模公共云供应商亚马逊网络服务 (AWS)、微软 Azure 和谷歌云平台 (GCP)。这三个云提供商都提供数据湖存储产品:Amazon Simple Storage Service (Amazon S3) 和 Amazon EMR(以前称为 Amazon Elastic MapReduce)、Azure Data Lake Store (ADLS) 和 Google Cloud Storage (GCS)。这三者还提供数据摄取、数据处理、分析和机器学习的服务。与在数据中心管理 Hadoop 集群相比,创建、管理和扩展云数据湖要容易得多,也快得多;权衡是云中的长期运营支出最终将变得巨大。
早些时候,我讨论了使用 Presto 和 Apache Spark 在数据湖上进行更快的 SQL 查询。 SQL 只是分析数据的其中一种方法,尽管它非常重要并且通常是第一步。此外,考虑使用 Power BI、Tableau 或 Qlik 等商业智能工具; Jupyter、Zeppelin 或 Spark 笔记本;机器学习,例如 scikit-learn、SparkML 或 KNIME;和深度学习,例如 TensorFlow 或 PyTorch。
超大规模云供应商拥有自己的分析和机器学习工具,可以连接到他们的数据湖。
Amazon Athena 使用 Presto 和 Hive 对 Amazon S3 中的数据执行 SQL 查询。 Amazon EMR 是一个云大数据平台,用于使用 Apache Spark、Apache Hive 和 Presto 等开源分析框架运行大规模分布式数据处理作业、交互式 SQL 查询和机器学习应用程序。 Amazon SageMaker 是一项完全托管的服务,用于构建、训练和部署机器学习模型。
Azure Data Lake Analytics (ADLA) 是一种较旧的按需(无服务器)分析作业服务,可简化大数据,并使用 U-SQL,即 SQL 加 C#。 ADLA 正在被 Azure Synapse Analytics 取代,这是一种无限的分析服务,将数据集成、企业数据仓库和大数据分析结合在一起。它使您可以使用无服务器或专用选项大规模地按您的条件自由查询数据。 Synapse 结合了数据湖、企业数据仓库和就地运营数据查询功能,可以自动从 ADLA 和数据仓库迁移数据和代码。 Synapse 与 Azure 机器学习、Azure 认知服务和 Power BI 深度集成。
Google Cloud Storage 提供与许多强大的 Google Cloud 服务的原生集成,例如 BigQuery(数据仓库)、Dataproc(Hadoop 生态系统)、Dataflow(无服务器流分析)、Video Intelligence API、Cloud Vision API 和 AI Platform。
总之,您可以非常灵活地选择合适的工具来分析您的数据。
自 Hadoop 集群和 MapReduce 时代以来,数据湖变得更加有用。 Presto 和 Apache Spark 提供比 MapReduce 快得多的 SQL 处理器,这要归功于内存中和大规模并行处理以及基于 Hive 的模式。与商用计算机的本地集群相比,基于云的数据湖更容易创建、管理和扩展。云数据湖与各种分析和人工智能工具紧密集成。

作者 east
大数据开发 3月 28,2023

为什么 Apache Iceberg 将统治云中的数据

云使数据团队能够收集大量数据并以合理的成本进行存储,从而为利用数据湖、数据网格和其他现代架构的新分析用例打开了大门。但是对于非常大量的数据,通用云存储在如何访问、管理和使用这些数据方面也提出了挑战和限制。
云中典型的 blob 存储系统缺乏显示文件之间关系或它们与表的对应方式所需的信息,这使得查询引擎的工作变得更加困难。此外,文件本身并不能使更改表的模式或在其上“时间旅行”变得容易。每个查询引擎必须有自己的如何查询文件的视图。突然之间,看似易于实现的数据架构变得比预期的更难。
这就是将表格格式应用于数据变得非常有用的地方。表格式明确定义了一个表、它的元数据和构成该表的文件。客户端不是在读取数据时应用架构,而是在运行查询之前就已经知道架构。此外,表元数据可以以提供更细粒度分区的方式保存。因此,将表格格式应用于数据可以提供许多优势,例如:
选择要使用的表格格式是一个重要的决定,因为它可以启用或限制可用的功能。在过去的两年里,我们看到 Apache Iceberg 获得了大量支持,这是一种最初由 Netflix 开发的表格格式,于 2018 年作为 Apache 孵化器项目开源,并于 2020 年从孵化器项目中毕业。
Iceberg 的构建是为了解决 Apache Hive 在处理超大数据集时遇到的一些挑战,包括规模、可用性和性能方面的问题。正如 Netflix 工程师当时指出的那样,超大规模数据集的表格格式应该像 SQL 一样可靠且可预测地工作,“没有任何不愉快的意外”。
有多种选择,我们相信 Iceberg 优于其他可用的开放式表格格式。这里有五个原因。
过去会对表格格式今天的工作方式产生重大影响。一些表格格式是从旧技术发展而来的,而另一些表格格式则一刀切。 Iceberg 属于后者。它是从头开始构建的,以解决 Apache Hive 中的缺点,这意味着它避免了过去阻碍数据湖的一些不良特性。如何处理架构更改(例如重命名列)就是一个很好的例子。
展望未来,这也意味着 Iceberg 不需要合理化如何在不导致生产数据应用程序出现问题的情况下进一步脱离相关工具。随着时间的推移,其他表格格式可能会迎头赶上,但截至目前,Iceberg 专注于提供下一组新功能,而不是回顾过去解决旧问题。
通过将处理引擎与表格格式分离,Iceberg 提供了更大的灵活性和更多选择。工程师不必被迫使用一种处理引擎,而是可以选择最适合工作的工具。选择之所以重要,至少有两个关键原因。首先,公司用来处理数据的引擎会随着时间而改变。例如,许多企业从 Hadoop 迁移到 Spark 或 Trino。其次,大型组织使用多种不同的技术是很常见的,并且有选择权使他们能够交替使用多种工具。
Iceberg 还支持多种文件格式,包括 Apache Parquet、Apache Avro 和 Apache ORC。这在今天提供了灵活性,但也为将来可能出现的文件格式提供了更好的长期可插拔性。
Iceberg 项目由 Apache 软件基金会管理,这意味着它遵循几个重要的 Apache Ways,包括赢得权威和共识决策。对于自称为“开源”的每个项目来说,情况不一定如此。 Apache Iceberg 公开其项目管理,因此您知道谁在运行该项目。其他表格格式没有透露谁有决策权。表格格式是数据架构中的基本选择,因此选择真正开放和协作的项目可以显着降低意外锁定的风险。
有几个迹象表明,围绕 Apache Iceberg 的协作社区正在使用户受益,并为项目的长期成功奠定基础。对于用户而言,Slack 频道和 GitHub 存储库显示出很高的参与度,无论是围绕新想法还是对现有功能的支持。至关重要的是,参与来自整个行业,而不仅仅是一个团体或 Iceberg 的原作者。
高度协作也有利于技术本身。该项目正在征求越来越多的提案,这些提案的想法各不相同,可以解决许多不同的用例。此外,该项目正在催生新的项目和想法,例如 Project Nessie、Puffin Spec 和开放元数据 API。
与其他一些表格项目不同,Iceberg 从一开始就内置了以性能为导向的功能,这在几个方面对用户有益。首先,用户通常假设一个具有开放代码的项目包含性能特性,却发现它们不包含在未来或含糊地承诺。其次,如果你想移动工作负载,使用表格格式应该很容易,你不太可能在 Iceberg 实现中遇到实质性差异。第三,一旦你开始使用开源 Iceberg,你就不太可能发现你需要的功能隐藏在付费专区后面。什么是开放的和什么不是开放的之间的区别也不是时间点问题。
作为一个从一开始就开放的项目,Iceberg 的存在是为了解决一个实际问题,而不是一个业务用例。这是一个很小但很重要的区别:拥有为 Iceberg 提供支持的付费产品的供应商,例如 Snowflake、AWS、Apple、Cloudera、Google Cloud 等,可以在他们实施 Iceberg 规范的程度方面展开竞争,但 Iceberg 项目本身无意为特定公司推动业务。
在 Snowflake,我们很早就创建了自己的表格格式,从而启用了各种新功能。但随着企业转向云数据平台,他们的需求和时间表会有所不同。一些公司有限制数据存储位置的监管要求,或者有他们需要保护的现有投资。
支持像 Iceberg 这样的外部表格式使我们的客户能够利用 Snowflake 中的所有数据,即使其中一些数据需要驻留在不同的位置。这就是为什么我们在今年早些时候在 Snowflake 中添加了对 Iceberg 作为附加表选项的支持,并且最近推出了一种名为 Iceberg Tables 的新型 Snowflake 表。
Apache Iceberg 社区中有一些优秀的资源,可用于了解有关该项目的更多信息并参与开源工作。

作者 east
大数据开发 3月 28,2023

如何将 R 与 BigQuery 结合使用

您是否希望将驻留在 Google BigQuery 中的数据作为 R 工作流程的一部分进行分析?多亏了 bigrquery R 包,这是一种非常无缝的体验——一旦你知道在这些数据上运行 dplyr 函数需要一些小的调整。
不过,首先,您需要一个 Google Cloud 帐户。请注意,即使数据在其他人的帐户中并且您不打算存储自己的数据,您也需要自己的 Google Cloud 帐户。
许多人已经拥有用于 Google 云端硬盘或 Gmail 等服务的通用 Google 帐户。如果您还没有,请务必创建一个。
然后,前往 https://console.cloud.google.com 上的 Google Cloud Console,使用您的 Google 帐户登录,并创建一个新的云项目。 R 老手注意:虽然在 RStudio 中工作时项目是个好主意,但在 Google Cloud 中它们是强制性的。
单击新建项目选项以创建新项目。
您应该会在 Google Cloud 顶部导航栏的左侧看到创建新项目的选项。单击“Google Cloud Platform”右侧的下拉菜单(如果您还没有任何项目,它可能会显示“选择项目”)。给你的项目一个名字。如果您已经在您的 Google 帐户中启用了结算功能,您将需要选择一个结算帐户;如果你不这样做,那可能不会作为一个选项出现。然后点击“创建”。
如果您不喜欢分配给项目的默认项目 ID,可以在单击“创建”按钮之前对其进行编辑。
如果你不喜欢为你的项目自动生成的项目 ID,你可以编辑它,假设你没有选择已经采取的东西。
完成新项目设置后,您会看到一个通用的 Google Cloud 仪表板,它看起来有点让人不知所措。这些都是什么?BigQuery 在哪里?您可能不需要担心大多数其他服务,但您确实希望能够在所有这些服务中轻松找到 BigQuery。
如果您只想使用一项服务,初始的 Google Cloud 主屏幕可能会有点让人不知所措。 (我已经删除了这个项目。)
一种方法是将 BigQuery“固定”到左侧导航菜单的顶部。 (如果您没有看到左侧导航,请单击左上角的三行“汉堡包”将其打开。)一直向下滚动,找到 BigQuery,将鼠标悬停在它上面,直到您看到一个图钉图标,然后单击图钉。
向下滚动到 Google Cloud 主屏幕左侧导航的底部,找到 BigQuery 服务。您可以通过将鼠标悬停在上面来“固定”它,直到看到固定图标,然后单击它。
现在,BigQuery 将始终显示在您的 Google Cloud Console 左侧导航菜单的顶部。向上滚动,您会看到 BigQuery。单击它,您将进入带有项目名称的 BigQuery 控制台,其中没有任何数据。
如果“编辑器”选项卡没有立即可见,请单击右上角的“编写新查询”按钮。
怎么办?人们通常通过使用可用的公共数据集来开始学习 BigQuery。您可以将其他用户的公共数据项目固定到您自己的项目中,包括一套由 Google 收集的数据集。如果您在您一直使用的同一个 BigQuery 浏览器选项卡中转到此 URL,Google 公共数据项目应该会自动将自己固定到您的项目。
感谢 GitHub 上的 JohannesNE 提供此提示:您可以使用下面显示的 URL 结构固定您可以访问的任何数据集。
如果这不起作用,请检查以确保您使用的是正确的 Google 帐户。如果您在浏览器中登录了多个 Google 帐户,您可能会被发送到与预期不同的帐户。
固定项目后,单击该固定项目名称左侧的三角形(在本例中为 bigquery-public-data),您将看到该项目中可用的所有数据集。 BigQuery 数据集就像一个传统的数据库:它有一个或多个数据表。单击数据集旁边的三角形以查看它包含的表格。
单击 BigQuery 网络界面中的表,您可以查看其架构,以及用于预览数据的选项卡。
单击表名以查看其架构。还有一个“预览”选项卡,可让您查看一些实际数据。
还有其他更少点击式的方法来查看您的数据结构。但首先….
BigQuery 对数据存储和数据查询都收费。当使用其他人创建的数据集时,他们需要为存储付费。如果您在 BigQuery 中创建和存储自己的数据,则需要付费——无论您是唯一一个使用它的人、与其他几个人共享数据还是将其公开,费率都是一样的。 (您每月可获得 10 GB 的免费存储空间。)
请注意,如果您对其他人的数据进行分析并将结果存储在 BigQuery 中,则新表将成为您的存储分配的一部分。
查询的价格基于查询处理的数据量而不是返回的数据量。这个很重要。如果您的查询在分析 4 GB 数据集后仅返回前 10 个结果,则该查询仍将使用您的 4 GB 数据分析配额,而不仅仅是与您的 10 行结果相关的少量数据。
您每月免费获得 1 TB 的数据查询;为分析而处理的每额外 TB 数据的成本为 5 美元。
如果你直接在数据上运行 SQL 查询,谷歌建议永远不要运行 SELECT * 命令,它会遍历所有可用的列。相反,只选择您需要减少需要处理的数据的特定列。这不仅可以降低您的成本;它还使您的查询运行得更快。我对我的 R dplyr 查询做同样的事情,并确保只选择我需要的列。
如果您想知道如何在查询运行之前知道您的查询将使用多少数据,答案很简单。在 BigQuery 云编辑器中,您可以在不运行查询的情况下键入查询,然后查看它将处理多少数据,如下面的屏幕截图所示。
使用 Web 界面中的 BigQuery SQL 编辑器,您可以在其数据集和项目下找到您的表。在不运行查询的情况下键入查询会显示它将处理多少数据。请记住在查询中使用 `projectname.datasetname.tablename`
即使您不了解 SQL,您也可以通过简单的 SQL 列选择来了解 R 中的成本,因为任何额外的过滤或聚合都不会减少分析的数据量。
因此,如果您的查询运行在 table-id 中名为 columnA、columnB 和 columnC 的三个列上,并且 table-id 在 dataset-id 中,它是 project-id 的一部分,您只需在查询编辑器中键入以下内容:
不要运行查询,只需键入它,然后查看右上角的行以查看将使用多少数据。无论您的 R 代码将对该数据做什么,都不会影响查询成本。
在上面的屏幕截图中,您可以看到我从 schedules 表中选择了三列,这是棒球数据集的一部分,是 bigquery-public-data 项目的一部分。
对元数据的查询是免费的,但您需要确保正确构建查询以符合查询条件。例如,使用 SELECT COUNT(*) 获取数据集中的行数是不收费的。
您还可以采取其他措施来限制成本。有关更多提示,请参阅 Google 的“控制 BigQuery 中的成本”页面。
不,您不需要信用卡即可开始使用 BigQuery。但是如果不启用计费,您的帐户就是一个 BigQuery“沙盒”,并非所有查询都有效。我强烈建议向您的帐户添加计费来源,即使您极不可能超出免费 BigQuery 分析的配额。
现在——终于! — 让我们看看如何使用 R 进入 BigQuery。
我将在本教程中使用 bigrquery 包,但您可能还需要考虑其他选项,包括 obdc 包或 RStudio 的专业驱动程序及其企业产品之一。
要使用 R 和 bigrquery 查询 BigQuery 数据,您首先需要使用以下语法建立与数据集的连接:
第一个参数是 bigrquery 包中的 bigquery() 函数,它告诉 dbConnect 您想要连接到 BigQuery 数据源。其他参数概述了项目 ID、数据集名称和计费项目 ID。
(连接对象几乎可以被称为任何东西,但按照惯例,它们通常被命名为 con。)
下面的代码加载 bigrquery 和 dplyr 库,然后创建与棒球数据集中的时间表表的连接。
bigquery-public-data 是项目参数,因为那是数据集所在的地方。 my_project_id 是计费参数,因为我的项目的配额将针对查询“计费”。
当我运行这段代码时,除了创建一个连接变量外,什么也没发生。但我第一次尝试使用该连接时,系统会要求我在浏览器窗口中验证我的 Google 帐户。
例如,要列出棒球数据集中所有可用的表,我会运行以下代码:
要在 R 中查询一个特定的 BigQuery 表,请使用 dplyr 的 tbl() 函数创建一个引用该表的表对象,例如使用我新创建的棒球数据集连接的时间表表:
如果您使用基本 R str() 命令检查 sked 的结构,您将看到一个列表,而不是数据框:
幸运的是,像 glimpse() 这样的 dplyr 函数通常可以与这种类型的对象(类 tbl_BigQueryConnection)无缝地工作。
运行 glimpse(skeds) 将主要返回您所期望的——除了它不知道数据中有多少行。
这告诉我 glimpse() 可能不会解析整个数据集——这意味着它很有可能不会增加查询费用,而是查询元数据。当我在运行该命令后检查我的 BigQuery Web 界面时,确实没有查询费用。
您可以对表对象运行 dplyr 命令,其方式与对传统数据框的操作方式几乎相同。但您可能还需要一个补充:将通常的 dplyr 工作流程的结果通过管道传输到 collect() 函数中。
下面的代码使用 dplyr 查看 skeds 表对象中的年份和主队,并将结果保存到 tibble(tidyverse 软件包套件使用的特殊类型的数据框)。
定价说明:我使用寻求相同信息的 SQL 语句检查了上述查询:
当我这样做时,BigQuery Web 编辑器显示只处理了 21.1 KiB 的数据,不超过 10 MB。为什么我的账单多了这么多?查询最小为 10 MB(并四舍五入到下一个 MB)。
旁白:如果您想将 R 查询的结果存储在临时 BigQuery 表而不是本地数据框中,您可以将 compute(name = “my_temp_table”) 添加到管道的末尾而不是 collect()。然而,你需要在一个你有权创建表的项目中工作,而谷歌的公共数据项目绝对不是那个。
如果您在没有 collect() 的情况下运行相同的代码,例如
您正在保存查询而不是查询的结果。请注意,available_teams 现在是一个具有类 tbl_sql、tbl_BigQueryConnection、tbl_dbi 和 tbl_lazy 的查询对象(惰性意味着它不会运行,除非特别调用)。
您可以在脚本中单独使用对象名称来运行保存的查询:
您可以在链式管道的末尾使用 show_query() 看到由 dplyr 语句生成的 SQL:
您可以将此 SQL 剪切并粘贴到 BigQuery 网络界面中,以查看您将使用多少数据。只需记住将普通表名(如“schedules”)更改为语法“project.dataset.tablename”;在这种情况下,`bigquery-public-data.baseball.schedules`。
如果您在 R 会话中第二次运行完全相同的查询,您将不会再次为数据分析付费,因为 BigQuery 将使用缓存的结果。
如果您习惯于编写 SQL 查询,并且想从 BigQuery 中提取数据作为更大的 R 工作流的一部分,则还可以在 R 中运行 SQL 命令。
例如,假设您要运行此 SQL 命令:
您可以使用 DBI 包的 dbGetQuery() 函数在 R 中执行此操作。这是代码:
请注意,我再次为该查询付费,因为 BigQuery 不认为 R 中的一个查询和 SQL 中的另一个查询完全相同,即使它们正在寻找相同的数据。
如果我再次运行该 SQL 查询,我就不会被收费。
在一次性初始设置之后,在 R 中分析 BigQuery 数据就像在本地数据帧上运行 dplyr 代码一样容易。请记住您的查询成本。如果您在 10 GB 的数据集上运行十几个查询,您将不会接近达到 1 TB 的每月免费配额。但是,如果您每天都在处理更大的数据集,那么有必要研究一下简化代码的方法。

作者 east

上一 1 … 15 16 17 … 19 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 如何在Chrome中设置启动时自动打开多个默认网页
  • spark内存溢出怎样区分是软件还是代码原因
  • MQTT完全解析和实践
  • 解决运行Selenium报错:self.driver = webdriver.Chrome(service=service) TypeError: __init__() got an unexpected keyword argument ‘service’
  • python 3.6使用mysql-connector-python报错:SyntaxError: future feature annotations is not defined
  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?

文章归档

  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (45)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (5)
  • 大数据开发 (491)
    • CDH (6)
    • datax (4)
    • doris (31)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (41)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (100)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (71)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (7)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.