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

月度归档3月 2023

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

  • 首页   /  2023   /  
  • 3月
大数据开发 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
运维 3月 28,2023

减少云费用的 12 个编程技巧

没有什么比观看应用程序病毒式传播更能让开发团队精神振奋的了。这是一种美妙的感觉——至少,在每月的云账单到来之前是这样。一些开发人员认为,管理计算成本是 devops 团队的责任。编码人员编写软件,将其扔到墙上,然后让其他人担心为此付费。没有东西会离事实很远。
聪明的开发人员知道他们的编码决策对公司的底线有很大的影响。庞大的代码速度较慢,需要更多的云资源才能运行。选择更好的算法和编写更紧凑的代码不仅仅关乎速度。编写良好的代码运行成本更低。
开发人员并不总能看到这种联系。在您自己的机器上编写代码很容易,RAM 和额外的磁盘空间是在购买机器时支付的。如果您有 2 TB 的磁盘空间,您可能不会注意到您的代码占用了多少空间。如果一个新的算法需要两倍的时间来运行,你的桌面可能甚至不会闪烁——而且,谁会注意到多了几毫秒?但几乎可以肯定的是,将计算量增加一倍将导致更大的云计算费用。
现代云计算擅长将资源利用率转化为订单项费用。优秀的云开发人员明白,他们有能力在编写代码时做出更明智的决策。它可以像运行分析器来识别慢点一样简单,或者避免不必要的数据存储以减少内存占用。
这里有 12 种方法可以简化您的代码,使其运行起来更精简、更快、成本更低。
大多数开发人员不会花太多时间优化他们的代码。如果它在他们的笔记本电脑上瞬间运行,他们不会注意到随着时间的推移它的运行速度是否慢了 20%、30% 甚至 300%。该程序仍在瞬间响应。但是当它们在服务器上出现数百万次时,这些差异就会加起来。仔细的分析可以标记缓慢的部分。重写它们可以减少应用程序需要的实例数。
使用的 RAM 量是为云实例定价的一个重要参数。在许多情况下,将 RAM 增加一倍也会使成本增加一倍。程序员可以通过避免将数据保存在内存中来减少他们的 RAM 占用空间。一些流算法,如 Java 的 Stream 类,设计用于处理大型数据文件,而无需将它们全部加载到内存中。 Apache DataSketches 项目在不占用所有内存的情况下,为复杂的大数据统计生成近似答案。
作为一个附带的好处,谨慎的 RAM 消耗也可以加速你的算法。有时,操作系统会开始使用虚拟内存将数据卸载到磁盘上。这可以防止崩溃,但会显着降低程序速度。
使用较低分辨率的图像和视频可以通过多种方式获得回报。首先,存储它们会更便宜。其次,任何数据泄露费用都会降低。第三,该应用程序对用户来说似乎更快捷。
所有的静态图像应该从一开始就最小化。唉,最小化的数量并不简单,因为在某些时候视觉质量下降到足以让用户察觉。找到正确的权衡是一些程序员不准备做出的设计决定。
某些使用上传图像的应用程序还可以在接收到图像后创建更小的缩略图和分辨率降低的版本。为此开发了像 ImageMagik 这样的工具包和像 WebP 这样的格式。
许多开发人员都是数字包装老鼠,他们存储信息以备不时之需。他们用无穷无尽的列填写表格,然后从不删除行。如果您拥有硬件并且磁盘驱动器有足够的空间,那么额外的数据不会花费任何费用。但是云对一切都收费。您将来真的需要所有这些价值吗?用户还想要那么多细节吗?转储一些旧数据将为您节省数据存储和泄露方面的资金。
在云实例上使用本地磁盘不仅危险,而且成本高昂。本地磁盘空间通常设计得足够快以保持操作系统高效运行。许多开发人员在具有 1 TB 或更多 TB 存储空间的个人计算机上创建他们的代码。云机器存储很少如此便宜或容易获得。云通常根据大小直接为存储计费,因此最好的方法是尽可能少地使用存储。不仅要考虑最小化应用程序创建的临时文件的方法,还要考虑最小化所需的系统库和软件包的方法。
日志文件非常适合在开发过程中识别问题和调试软件。但是一旦代码投入生产,您就不需要保留所有这些代码。所有额外的信息都会阻塞本地磁盘或对象存储。在设计日志系统时,将其配置为经常删除日志。许多日志包如 Log4j 可以设置为保留最少数量的日志并滚动删除它们。
无服务器架构计划仅在您的代码运行时计费,这可以在负载间歇性时为您节省大量资金。即使是拥有源源不断的用户流的应用程序,其停滞时间也比您预期的要长。
许多无服务器定价计划奖励仔细的编码和非常快的性能以及最小的 RAM 消耗。计费公式以毫秒为单位计算响应时间,并且只对处理器被占用的时间收费。作为开发人员,您会立即获得反馈,因为您可以直接跟踪响应时间并查看您的代码更改如何影响它。
无服务器方法非常适合较小或更多实验项目,而且费用通常低至每月几美分。如果您的应用程序只是偶尔运行某些功能,那么使用无服务器可能是有意义的。
随着数据变老,访问频率降低。您可以通过将应用程序设置为将旧数据迁移到更便宜的位置来预见这一点。一些云对所谓的“冷存储”收费要低得多,这可能需要几分钟甚至几小时才能交付数据。其他云,如 Wasabi 或 Backblaze,专门为 Amazon S3 对象提供归档存储,收费远低于主要云。在某些情况下,他们甚至不对数据泄露收费。一旦不再需要大量数据就卸载数据可能非常具有成本效益。
如果你看过一些框架生成的 HTML 标签,你就会知道布局会变得多么可笑。它只是一直向下嵌套到 DIV 标签中的 DIV 标签——这需要花钱来生成和交付。我认识的一位网页设计师吹嘘说,通过更明智地使用 CSS 创建更简单的布局,他们的带宽费用就减少了 30%。
像 React 这样的一些框架需要相当多的计算能力,尤其是当它们使用服务器端渲染等功能时。所有这些代码推高了每月的云账单。相反的理念是创建一个静态站点,该站点由缓存逐字提供的不变的 HTML、CSS 和 JavaScript 块构建。通过将缓存移至更靠近用户的位置,使用内容分发网络可以进一步加快分发速度。
各种框架都接受这种静态哲学。 Jekyll、Hugo、Gridsome 和 Pelican 只是将您的所有内容打包到一组紧凑、不变的文件中的几个工具。您仍然可以使用 AJAX 调用在页面中构建个性化设置,但网站的大部分内容在服务器上产生的负载很小。
随着浏览器变得越来越强大,一些框架使得将更多计算直接转移到客户端变得更加简单。好的 JavaScript 或 WebAssembly 代码可以将更多的负载推到用户的机器上,并从您的云服务器上卸下。一些开发人员正在将他们的云层减少到只不过是一个带有一些用于身份验证的业务逻辑的数据库。一位朋友使用静态 HTML 和服务器端版本的 PostgreSQL 运行一切,其中嵌入了输出 JSON 的过程。
浏览器还有更精细的选项用于在本地存储信息,例如 HTML Web 存储标准和 W3C 索引数据库 API。不再只是短字符串和 cookie。由于这些数据不通过互联网传输,因此可以更快地获得这些数据,并且让用户放心,因为他们知道自己的数据没有存储在一个集中的、可破解的数据库中。当数据可以免费存在于用户的机器上时,为什么还要为数据存储和泄露付费?
一些开发人员专门处理数据库。有些人喜欢用精心设计的前端创造美好的第一印象。现在云成本如此灵活,一些团队正式任命“成本工程师”来管理代码成本和效率。成本工程师的首要关注点是让应用程序代码运行得更干净、更快、更轻便,从而更便宜。将此任务作为某人工作的一部分传达了一个信息,即管理代码成本作为开发团队角色和责任的一部分的重要性。

作者 east
Tensorflow 3月 27,2023

什么是 TensorFlow?机器学习库解释

机器学习是一门复杂的学科,但实施机器学习模型远没有过去那么令人生畏,这要归功于机器学习框架——例如谷歌的 TensorFlow——简化了获取数据、训练模型、提供预测和完善未来结果的过程.
TensorFlow 由 Google Brain 团队创建,最初于 2015 年向公众发布,是一个用于数值计算和大规模机器学习的开源库。 TensorFlow 将大量机器学习和深度学习模型和算法(也称为神经网络)捆绑在一起,并通过常见的编程隐喻使它们变得有用。它使用 Python 或 JavaScript 为构建应用程序提供方便的前端 API,同时在高性能 C++ 中执行这些应用程序。
TensorFlow 与 PyTorch 和 Apache MXNet 等框架竞争,可以训练和运行深度神经网络,用于手写数字分类、图像识别、词嵌入、递归神经网络、用于机器翻译的序列到序列模型、自然语言处理,以及基于 PDE(偏微分方程)的模拟。最重要的是,TensorFlow 支持大规模生产预测,使用与训练相同的模型。
TensorFlow 还有一个广泛的预训练模型库,可以在您自己的项目中使用。您还可以使用 TensorFlow Model Garden 中的代码作为训练您自己的模型的最佳实践示例。
TensorFlow 允许开发人员创建数据流图——描述数据如何通过图或一系列处理节点移动的结构。图中的每个节点代表一个数学运算,节点之间的每个连接或边都是一个多维数据数组或张量。
TensorFlow 应用程序可以在大多数任何方便的目标上运行:本地机器、云中的集群、iOS 和 Android 设备、CPU 或 GPU。如果您使用谷歌自己的云,您可以在谷歌定制的 TensorFlow 处理单元 (TPU) 芯片上运行 TensorFlow 以进一步加速。不过,由 TensorFlow 创建的结果模型可以部署在大多数用于提供预测服务的设备上。
2019 年 10 月发布的 TensorFlow 2.0 根据用户反馈以多种方式改进了框架,使其更易于使用(例如,通过使用相对简单的 Keras API 进行模型训练)和更高的性能。得益于新的 API,分布式训练更容易运行,并且对 TensorFlow Lite 的支持使得在更多种类的平台上部署模型成为可能。但是,必须重写为早期版本的 TensorFlow 编写的代码——有时只是轻微重写,有时是重写——以最大限度地利用新的 TensorFlow 2.0 功能。
经过训练的模型可用于通过使用 REST 或 gRPC API 的 Docker 容器将预测作为服务提供。对于更高级的服务场景,您可以使用 Kubernetes
TensorFlow 通过 Python 语言为程序员提供了所有这些。 Python 易于学习和使用,它提供了方便的方法来表达如何将高级抽象耦合在一起。 TensorFlow 在 Python 3.7 到 3.10 版本上受支持,虽然它可以在 Python 的早期版本上工作,但不能保证这样做。
TensorFlow 中的节点和张量是 Python 对象,TensorFlow 应用程序本身就是 Python 应用程序。然而,实际的数学运算并不是在 Python 中执行的。通过 TensorFlow 可用的转换库被编写为高性能 C++ 二进制文件。 Python 只是在各个部分之间引导流量,并提供高级编程抽象以将它们连接在一起。
TensorFlow 中的高级工作——创建节点和层并将它们链接在一起——使用 Keras 库。 Keras API 表面上很简单;一个三层的基本模型可以用不到 10 行代码定义,而同样的训练代码只需要多几行代码。但是如果你想“揭开面纱”并做更细粒度的工作,比如编写你自己的训练循环,你可以这样做。
一般来说,Python 是使用 TensorFlow 和机器学习的最流行的语言。但 JavaScript 现在也是 TensorFlow 的一流语言,而 JavaScript 的巨大优势之一是它可以在任何有网络浏览器的地方运行。
TensorFlow.js,作为 JavaScript TensorFlow 库的名称,使用 WebGL API 通过系统中可用的任何 GPU 来加速计算。也可以使用 WebAssembly 后端来执行,如果你只在 CPU 上运行,它比常规的 JavaScript 后端更快,尽管最好尽可能使用 GPU。预建模型让您可以启动并运行简单的项目,让您了解事情是如何运作的。
经过训练的 TensorFlow 模型也可以部署在边缘计算或移动设备上,例如 iOS 或 Android 系统。 TensorFlow Lite 工具集优化 TensorFlow 模型以在此类设备上良好运行,允许您在模型大小和准确性之间进行权衡。较小的模型(即 12MB 与 25MB,甚至 100+MB)的准确性较低,但准确性损失通常很小,并且被模型的速度和能效所抵消。
TensorFlow 为机器学习开发提供的最大好处是抽象。开发人员无需处理实现算法的具体细节,或找出将一个函数的输出连接到另一个函数的输入的正确方法,而是可以专注于整体应用程序逻辑。 TensorFlow 会处理幕后的细节。
TensorFlow 为需要调试和自省 TensorFlow 应用程序的开发人员提供了额外的便利。每个图形操作都可以单独和透明地评估和修改,而不是将整个图形构建为一个不透明的对象并立即对其进行评估。这种所谓的“急切执行模式”在旧版本的 TensorFlow 中作为一个选项提供,现在已成为标准。
TensorBoard 可视化套件让您可以通过基于 Web 的交互式仪表板检查和分析图形的运行方式。 Tensorboard.dev(由 Google 托管)服务可让您托管和共享用 TensorFlow 编写的机器学习实验。它可以免费使用,最多可存储 100M 标量、1GB 张量数据和 1GB 二进制对象数据。 (请注意,托管在 Tensorboard.dev 中的任何数据都是公开的,因此不要将其用于敏感项目。)
TensorFlow 还从谷歌一流商业机构的支持中获得了许多优势。 Google 推动了该项目背后的快速开发步伐,并创建了许多重要的产品,使 TensorFlow 更易于部署和使用。上述用于在谷歌云中加速性能的 TPU 芯片只是一个例子。
TensorFlow 实现的一些细节使得某些训练作业很难获得完全确定的模型训练结果。有时,在一个系统上训练的模型与在另一个系统上训练的模型会略有不同,即使它们被输入完全相同的数据。造成这种差异的原因很微妙——一个原因是随机数的播种方式和位置;另一个与使用 GPU 时的某些非确定性行为有关。 TensorFlow 的 2.0 分支有一个选项,可以通过几行代码在整个工作流中启用确定性。但是,此功能会以性能为代价,并且只能在调试工作流时使用。
打破围绕机器学习和人工智能的炒作,我们的小组讨论了该技术的定义和含义。
TensorFlow 与许多其他机器学习框架竞争。 PyTorch、CNTK 和 MXNet 是解决许多相同需求的三个主要框架。

作者 east
mysql 3月 27,2023

Google 的 Logica 语言解决了 SQL 的缺陷

谷歌推出了开源 Logica 编程语言,这是一种逻辑编程语言,旨在通过使用数学命题逻辑而非自然语言的语法来“解决 SQL 问题”。
作为谷歌 Yedalog 语言的后继者,Logica 于 4 月 12 日推出,是一种类似于 Datalogic 的逻辑语言。面向工程师、数据科学家和其他专家,它将代码编译为 SQL 并在基于云的 Google BiqQuery 数据仓库上运行,并提供对 PostgreSQL 和 SQLite 的实验性支持。但与 SQL 不同,Logica 更简洁并且支持可重用的抽象。它还支持模块和导入,可以从交互式 Python 笔记本中使用,并使测试查询变得简单自然,谷歌开发人员在一篇博客文章中写道。
Logica 通过使用数理逻辑语法而不是自然英语语言来解决 SQL 问题。谷歌列举了 SQL 的问题,例如从英文单词构建语句的冗长和对抽象的有限支持。 Logica 扩展了经典的逻辑编程语法,特别是聚合。它被宣传为一种用于数据操作的声明性语言。
Logica 开源项目背后的 Google 开发人员鼓励在以下场景中使用它:
Google 设立了一个教程来帮助开发者学习 Logica。要在 Google Cloud BigQuery 上运行逻辑程序,开发人员需要打开一个 Google Cloud 项目。项目建立后,开发者可以通过提供项目 ID 在 Colab 中运行 Logica 程序。要在本地运行 Logica,开发人员需要 Python 3。

作者 east
人工智能 3月 27,2023

人工智能的问题和前景:不只需要数据,更需要和人类智慧合作

人工智能 (AI) 的问题和前景是人。这一直是正确的,无论我们对机器人霸主接管的希望(和恐惧)是什么。在人工智能和更普遍的数据科学中,诀窍是融合人类和机器的优点。一段时间以来,人工智能行业的啦啦队倾向于强调等式的机器方面。但正如 Spring Health 数据科学家 Elena Dyachkova 所暗示的那样,数据(及其背后的机器)只有在解读数据的人是否聪明时才有用。换句话说,数据不是自我解释的,而是需要人类的智慧和判断来赋予它意义和价值。

Dyachkova 正在回复 Amplify Partners 的普通合伙人和 Mattermark 前数据主管 Sarah Catanzaro 的评论。在讨论不完善的数据和分析在决策制定中的效用时,Catanzaro 说,“我认为数据社区常常忽略了有缺陷但方向正确的报告和分析的价值。”然后她继续争辩说,“许多决定不需要高精度的洞察力;在许多情况下,我们不应该回避快速和肮脏的事情。”这是一个很好的提醒,我们不需要完美的数据来做出决定。事实上,追求完美可能会导致分析瘫痪,浪费时间和资源,而错过重要的机会。

那挺好的。 Gary Marcus 是 Geometric Intelligence 的科学家和创始人,Geometric Intelligence 是一家机器学习公司,于 2016 年被 Uber 收购,他坚持认为,欣赏 AI 及其子集机器学习和深度学习的关键是认识到这种模式识别工具处于“最佳状态”当我们需要的只是粗略的结果时,赌注很低,完美的结果是可选的。”尽管如此,在我们寻求更强大的 AI 驱动的应用程序的过程中,我们一直在寻找越来越多的数据,期望只要有足够的数据,机器学习模型就会以某种方式为我们提供比“粗略的结果”更好的结果。唉!它在现实世界中根本行不通。

虽然更多的数据可能很好,但对于许多应用程序来说,我们并不需要更多的数据。相反,我们需要人们更好地理解我们已有的数据。正如 Dyachkova 指出的那样,“产品分析 80% 是快速而肮脏的。但是判断什么时候快和脏是合适的能力需要对统计数据有很好的理解。”了解? Indeed.com 的数据科学家文森特道林 (Vincent Dowling) 更清楚地说明了这一点:“成为一名经验丰富的分析师/科学家的很多价值在于确定做出决定所需的严谨程度。”他们都在谈论如何做出决策,在这两种情况下,查看数据的人的体验比数据本身更重要。机器永远无法弥补操作它们的人的悟性不足。正如《卫报》的一篇社论所言,“人工智能的前景在于,它将赋予机器从数据中发现模式的能力,并比人类更快更好地做出决策。如果他们更快地做出更糟糕的决定会怎样?”这是一个非常现实的可能性,如果人们放弃所有权,认为数据和机器会以某种方式为自己说话。这也是一个非常危险的可能性,如果我们不考虑数据和算法可能存在的偏见、错误和限制。

让人们负责在实践中并不是那么容易实现的。正如 Gartner Research 副总裁 Manjunath Bhat 所说,人工智能受人类输入的影响,包括我们选择输入机器的数据。反过来,我们算法的结果会影响我们做出决策所依据的数据。 “人们以数据的形式消费事实。然而,数据可以被突变、转换和更改——所有这些都是为了使其易于使用。我们别无选择,只能生活在高度情境化的世界观范围内。”亚马逊应用科学家 Eugene Yan 认为,对于一个成功的机器学习项目,“你需要数据。您需要一个强大的管道来支持您的数据流。最重要的是,你需要高质量的标签。”但如果没有经验丰富的人,就无法正确标记这些数据。要很好地标记它,您需要了解数据。这让人回想起十年前 Gartner 分析师 Svetlana Sicular 提出的观点:企业中到处都是了解其业务细微差别的人。他们最有能力针对公司的数据找出正确的问题类型。他们可能缺乏的是 Dyachkova 指出的对统计、数学和特定公司业务的基本理解——知道什么时候“足够好”的结果实际上足够好的能力。

当然,这就是数据科学困难的原因。在每项关于采用 AI/ML 的主要障碍的调查中,“人才”总是位居榜首。有时我们认为这是因为数据科学人才短缺,但也许我们应该担心缺乏对统计、数学和特定公司业务的基本理解。或者更准确地说,我们应该担心缺乏能够沟通、合作和教育其他人这些基本理解的人才。数据科学不是一个孤立或专门化的领域,而是一个需要跨部门和跨职能协作和共享知识和见解的领域。因此,我们需要培养那些不仅擅长处理数据和机器,而且擅长与其他人交流和合作的人才。

作者 east

1 2 3 下一个

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

标签

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

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?
  • C++ 中避免悬挂引用的企业策略有哪些?
  • 嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
  • C++如何在插件式架构中使用反射实现模块隔离?
  • C++如何追踪内存泄漏(valgrind/ASan等)并定位到业务代码?
  • C++大型系统中如何组织头文件和依赖树?

文章归档

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

功能

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

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