From 4acb58e3ed44ecdb98f7f218062560cdd805c01f Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Sat, 8 Jan 2022 19:14:18 +0800 Subject: [PATCH] 2022-01-08 19:14:18 --- trans/ef-code-1st/02.md | 2 +- trans/ef-code-1st/05.md | 2 +- trans/fsharp/09.md | 2 +- trans/hbase/6.md | 42 ++++++++++++++++++++--------------------- trans/hdinsight/00.md | 2 +- trans/hdinsight/09.md | 4 ++-- trans/hdinsight/10.md | 2 +- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/trans/ef-code-1st/02.md b/trans/ef-code-1st/02.md index 2c9986b..69bed2d 100644 --- a/trans/ef-code-1st/02.md +++ b/trans/ef-code-1st/02.md @@ -943,7 +943,7 @@ public class ProjectsContext : DbContext 实体框架代码的当前版本在本书编写时(5.0),首先伴随着许多约定。当模型的某些方面没有明确定义时,约定规定了 EFCF 将如何配置它们。 -包含的约定的完整列表由实现[系统中的](http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions.aspx)[约定](http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions.iconvention.aspx)的类组成。EntityFramework 程序集的 data . entity . model configuration . convents命名空间。你通常可以通过查看每个班级的描述来知道他们应该做什么。 +包含的约定的完整列表由实现[系统中的](http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions.aspx)[约定](http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions.iconvention.aspx)的类组成。EntityFramework 程序集的 data . entity . model configuration . convents 命名空间。你通常可以通过查看每个班级的描述来知道他们应该做什么。 最常见的惯例是: diff --git a/trans/ef-code-1st/05.md b/trans/ef-code-1st/05.md index 7d9e89b..664e074 100644 --- a/trans/ef-code-1st/05.md +++ b/trans/ef-code-1st/05.md @@ -369,7 +369,7 @@ catch (DbEntityValidationException ex) ### 验证属性 -类似于我们可以使用属性来声明映射选项的方式,我们也可以使用属性来声明验证规则。验证属性必须继承自[系统中的](http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.aspx)[验证属性](http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.aspx)。component model . DataAnnotations命名空间并覆盖其中一个[是有效的](http://msdn.microsoft.com/en-us/library/dd730022.aspx)方法。有一些简单的验证属性,我们可以立即使用,并且与实体框架没有任何关系。 +类似于我们可以使用属性来声明映射选项的方式,我们也可以使用属性来声明验证规则。验证属性必须继承自[系统中的](http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.aspx)[验证属性](http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.aspx)。component model . DataAnnotations 命名空间并覆盖其中一个[是有效的](http://msdn.microsoft.com/en-us/library/dd730022.aspx)方法。有一些简单的验证属性,我们可以立即使用,并且与实体框架没有任何关系。 表 5:验证属性 diff --git a/trans/fsharp/09.md b/trans/fsharp/09.md index 188a468..7a25b0b 100644 --- a/trans/fsharp/09.md +++ b/trans/fsharp/09.md @@ -1,6 +1,6 @@ # 九、进一步阅读 -希望你喜欢这篇关于 F# 的介绍。如果它启发了你去学习更多关于 F# 的知识,还有很多其他的材料可以用来进一步阅读。官方的 for F# 开发中心有大量关于 F #的资料和许多指向 http://fsharp.net社区资源的跳转点。 +希望你喜欢这篇关于 F# 的介绍。如果它启发了你去学习更多关于 F# 的知识,还有很多其他的材料可以用来进一步阅读。官方的 for F# 开发中心有大量关于 F #的资料和许多指向 http://fsharp.net 社区资源的跳转点。 关于 F# 的另一个很好的信息来源是包含 F# 内容的开发者博客。各种各样的博主用不同的观点写 F# 的文章。这里只是几个开始: diff --git a/trans/hbase/6.md b/trans/hbase/6.md index 164b52c..f65cda9 100644 --- a/trans/hbase/6.md +++ b/trans/hbase/6.md @@ -1,18 +1,18 @@ # 六、.NET 和 Stargate 来连接 -Stargate是 HBase REST API 的名称,它使数据可以通过 HTTP 进行读写。Stargate 公开来自与表结构匹配的 URL 的数据(例如,/access-logs/rk1 将从 access-logs 表中获取带有关键字 rk1 的行)。 +Stargate 是 HBase REST API 的名称,它使数据可以通过 HTTP 进行读写。Stargate 公开来自与表结构匹配的 URL 的数据(例如,/access-logs/rk1 将从 access-logs 表中获取带有关键字 rk1 的行)。 HTTP 动词 GET、POST 和 DELETE 用于处理作为资源的数据,这给了 Stargate 一个很好的 RESTful 接口。您可以在 JSON 中处理行和单元格,但该应用编程接口的缺点是所有数据都表示为 Base64 字符串,这些字符串是从 HBase 中的原始字节数组编码而来的。如果您只想使用像 Postman 或 cURL 这样的 REST 客户端进行浏览,这将使应用编程接口变得很尴尬。 像节俭应用编程接口一样,星际之门是一个独立的服务,你可以从 hbase-daemon.sh 开始休息。默认情况下,它监听端口 8080(并且已经在 hbase-简洁地说是 Docker 映像上运行)。 -在生产环境中,您可以在区域服务器上运行Stargate,但是如果您想将它用作 HBase 的主要接口,您应该考虑使用单独的服务器进行负载平衡。 +在生产环境中,您可以在区域服务器上运行 Stargate,但是如果您想将它用作 HBase 的主要接口,您应该考虑使用单独的服务器进行负载平衡。 ![](img/00012.jpeg)提示:在[这篇博文](https://blog.sixeyed.com/using-nginx-as-a-load-balancing-proxy-for-stargate)中,我用 Nginx 构建了一个负载平衡反向代理。 -您可以使用任何带有 HTTP 客户端的框架来与Stargate对话。在本章中,我们将使用 cURL 来查看原始的 HTTP 数据,并使用. NET 客户端库在更高的抽象级别上工作。 +您可以使用任何带有 HTTP 客户端的框架来与 Stargate 对话。在本章中,我们将使用 cURL 来查看原始的 HTTP 数据,并使用. NET 客户端库在更高的抽象级别上工作。 -代码清单 48 显示了对根Stargate URL 的 GET 请求(cURL 中的默认动词)。响应与 HBase Shell 中的列表命令相同: +代码清单 48 显示了对根 Stargate URL 的 GET 请求(cURL 中的默认动词)。响应与 HBase Shell 中的列表命令相同: 48:用 cURL 列出表格 @@ -23,9 +23,9 @@ HTTP 动词 GET、POST 和 DELETE 用于处理作为资源的数据,这给了 ``` -HTTP GET 请求相当于 HBase 外壳中的 GET 命令。您可以添加一个接受头来指定您想要的响应格式,但是Stargate提供的数据量有一些限制。 +HTTP GET 请求相当于 HBase 外壳中的 GET 命令。您可以添加一个接受头来指定您想要的响应格式,但是 Stargate 提供的数据量有一些限制。 -如果您试图请求整个表,例如 http://127 . 0 . 0 . 1:8080/access-logs,您将得到一个错误响应,状态代码为 405,这意味着该方法不被允许。你不能在 HBase 中获取整个表,405 是Stargate的实现。 +如果您试图请求整个表,例如 http://127 . 0 . 0 . 1:8080/access-logs,您将得到一个错误响应,状态代码为 405,这意味着该方法不被允许。你不能在 HBase 中获取整个表,405 是 Stargate 的实现。 您可以通过在表名后添加行键来获取一整行,但是如果您的行格式中有任何对 HTTP 不友好的字符,您将需要在 URL 中对它们进行转义。您也不能获得一行的纯文本表示;您需要用像 JSON 这样的以数据为中心的格式发出请求。 @@ -63,11 +63,11 @@ HTTP GET 请求相当于 HBase 外壳中的 GET 命令。您可以添加一个 | 单元格.列 | dDoxMTA2 | t:1106 | | 手机。$ | MTIw | One hundred and twenty | - 6:编码和解码的Stargate值 + 6:编码和解码的 Stargate 值 请注意,单元格中的列值是全名(列族加上限定符,用冒号分隔),数值单元格值实际上是字符串。 -您还可以从 Stargate 获取一行中的单列族(使用 URL 格式/{ table }/{ row-key }/{ column-family }),或者单个单元格值。对于单个单元格,您可以以纯文本方式获取它们,Stargate将在响应中解码该值,如**错误!未找到参考源。**: +您还可以从 Stargate 获取一行中的单列族(使用 URL 格式/{ table }/{ row-key }/{ column-family }),或者单个单元格值。对于单个单元格,您可以以纯文本方式获取它们,Stargate 将在响应中解码该值,如**错误!未找到参考源。**: 代码清单 50:获取单个单元格值 @@ -83,7 +83,7 @@ HTTP GET 请求相当于 HBase 外壳中的 GET 命令。您可以添加一个 网址格式仍然需要一个行键和一个表,但是使用 PUT,网址中的键被忽略,取而代之的是请求数据中的键。代码清单 51 显示了更新我的行中两个单元格的 PUT 请求: - 51:用Stargate更新细胞 + 51:用 Stargate 更新细胞 ```java $ curl -X PUT -H "Content-Type: application/json" -d '{ @@ -103,9 +103,9 @@ HTTP GET 请求相当于 HBase 外壳中的 GET 命令。您可以添加一个 ``` -![](img/00012.jpeg)提示:Stargate对于临时请求非常方便,但是使用 Base64 可能会很困难。我在博客上写了一些简单的工具让它变得更简单。 +![](img/00012.jpeg)提示:Stargate 对于临时请求非常方便,但是使用 Base64 可能会很困难。我在博客上写了一些简单的工具让它变得更简单。 -该 PUT 请求增加了实际上是我的行中的字符串的数值。通过Stargate不能使用 incr 命令自动增加计数器列,所以如果你需要增加值,那么你必须先读取它们,然后进行更新。 +该 PUT 请求增加了实际上是我的行中的字符串的数值。通过 Stargate 不能使用 incr 命令自动增加计数器列,所以如果你需要增加值,那么你必须先读取它们,然后进行更新。 您可以使用 cURL 做更多的事情,比如发送删除请求来删除数据,以及创建扫描仪来获取多行,但是语法变得很麻烦。在星际之门中使用 RESTful API 的包装器是一个更好的选择。 @@ -115,18 +115,18 @@ NuGet 是的包管理器。NET 应用,还有几个开源包是访问星际之 将该包及其依赖项添加到。NET 应用中,您可以使用代码清单 52 中的 NuGet 包管理器控制台命令: - 52:为Stargate添加一个 NuGet 引用 + 52:为 Stargate 添加一个 NuGet 引用 ```java Install-Package "HBase.Stargate.Client.Autofac" ``` -在本书的 GitHub 存储库中,有一个. NET 控制台应用,它使用部落的客户端连接到Stargate,运行在简洁的 Docker 容器中。 +在本书的 GitHub 存储库中,有一个. NET 控制台应用,它使用部落的客户端连接到 Stargate,运行在简洁的 Docker 容器中。 -要设置Stargate客户端,您需要配置服务器网址并构建容器。代码清单 53 展示了如何使用 Autofac 实现这一点: +要设置 Stargate 客户端,您需要配置服务器网址并构建容器。代码清单 53 展示了如何使用 Autofac 实现这一点: - 53:配置Stargate客户端 + 53:配置 Stargate 客户端 ```java var builder = new ContainerBuilder(); @@ -140,7 +140,7 @@ NuGet 是的包管理器。NET 应用,还有几个开源包是访问星际之 ``` -星之门选项对象包含星之门(或代理)网址,星之门模块包含所有其他容器注册。从容器中获得的 IStargate 接口提供了对所有Stargate客户端操作的访问,具有简洁的抽象,并且所有数据项都编码为字符串。 +星之门选项对象包含星之门(或代理)网址,星之门模块包含所有其他容器注册。从容器中获得的 IStargate 接口提供了对所有 Stargate 客户端操作的访问,具有简洁的抽象,并且所有数据项都编码为字符串。 星际之门客户端有两种读取数据的方法。最简单的是 ReadValue(),它获取一个特定的单元格值,将表名、行键、列族和限定符传递给它。这在功能上等同于带有包含表名、行键和列名的 URL 的 GET 请求,它返回编码为字符串的单个单元格值,如代码清单 54 所示: @@ -168,9 +168,9 @@ NuGet 是的包管理器。NET 应用,还有几个开源包是访问星际之 ReadValue()调用将很快返回,因为它获取的是单个数据,FindCells()调用将很快为 Stargate 服务,但是如果有许多包含大量数据的单元格,客户端可能需要更长时间才能收到。 -从Stargate获取数据的另一种方法是创建一个行扫描器,它类似于服务器端的游标,您可以使用它来读取多行,并且扫描器可以选择有一个过滤器来限制返回的单元格数量。 +从 Stargate 获取数据的另一种方法是创建一个行扫描器,它类似于服务器端的游标,您可以使用它来读取多行,并且扫描器可以选择有一个过滤器来限制返回的单元格数量。 -用Stargate扫描行有两个部分。首先,创建运行在服务器上的扫描仪。星际之门给你一个扫描仪的参考,你可以用它来获取行。在。NET 客户端,您可以使用 ScannerOptions 对象来指定扫描的开始和结束行。 +用 Stargate 扫描行有两个部分。首先,创建运行在服务器上的扫描仪。星际之门给你一个扫描仪的参考,你可以用它来获取行。在。NET 客户端,您可以使用 ScannerOptions 对象来指定扫描的开始和结束行。 代码清单 56 显示了如何创建一个扫描器,从 2015 年 10 月开始为一个系统检索一个用户的所有访问日志: @@ -207,7 +207,7 @@ ReadValue()调用将很快返回,因为它获取的是单个数据,FindCells ![](img/00015.jpeg)注意:当您通过扫描仪迭代时返回的单元格可能来自多行,因此不要假设 MoveNext(或其他客户端中的等效方法)移动到下一行—它会移动到下一组单元格,这些单元格可能来自多行。 -按行键扫描是从Stargate读取数据的最快方法,但是如果需要通过列中的数据(限定符或单元格值)来额外限制结果,则可以在创建扫描仪时指定过滤器。 +按行键扫描是从 Stargate 读取数据的最快方法,但是如果需要通过列中的数据(限定符或单元格值)来额外限制结果,则可以在创建扫描仪时指定过滤器。 过滤器也在 Stargate 中运行服务器端,所以它比在客户端获取整行和提取某些列更快,但是它确实使用了额外的服务器资源(如果您在区域服务器上运行 Stargate,这很重要)。 @@ -235,7 +235,7 @@ column prefixfilter–返回列名与指定前缀匹配的单元格 ``` -IStargate 接口有两种写入数据的方法。最简单的是 WriteValue(),它相当于对一行中特定单元格的 PUT 请求。如果需要,Stargate会创建行和/或列,并设置值,如代码清单 59 所示: +IStargate 接口有两种写入数据的方法。最简单的是 WriteValue(),它相当于对一行中特定单元格的 PUT 请求。如果需要,Stargate 会创建行和/或列,并设置值,如代码清单 59 所示: 59:用 IStargate 更新单元格值 @@ -279,7 +279,7 @@ IStargate 接口有两种写入数据的方法。最简单的是 WriteValue(), ``` -星际之门 API 是无状态的(即使是扫描器也运行在 Region Server 上,Region Server 不一定是星际之门服务器),客户端也是无状态的,所以本地没有数据缓存,除非你自己在内存中保留单元格。每次调用Stargate客户端读取或写入数据都会导致对Stargate的 REST 调用。 +星际之门 API 是无状态的(即使是扫描器也运行在 Region Server 上,Region Server 不一定是星际之门服务器),客户端也是无状态的,所以本地没有数据缓存,除非你自己在内存中保留单元格。每次调用 Stargate 客户端读取或写入数据都会导致对 Stargate 的 REST 调用。 在这一章中,我们看了星际之门,HBase 提供的 REST API。它将行中的数据作为资源公开,使用描述数据路径的 URL 格式,始终包括表名和行键,以及可选的列族和限定符。 diff --git a/trans/hdinsight/00.md b/trans/hdinsight/00.md index 45c76dd..dce1639 100644 --- a/trans/hdinsight/00.md +++ b/trans/hdinsight/00.md @@ -10,7 +10,7 @@ * 使用 Azure Blob 存储来存储输入和输出数据 * 了解 PowerShell 在管理集群和执行作业中的作用 * 在 HDInsight 平台上运行用 C# 编写的 MapReduce 作业 -* 高级语言猪和Hive +* 高级语言猪和 Hive * 与微软商业智能工具连接,以检索、丰富和可视化输出 示例过程不会涵盖 HDInsight 中的所有可用功能。在最后一章,这本书将回顾一些以前没有讨论过的特性,这样读者将对平台有一个完整的了解。 diff --git a/trans/hdinsight/09.md b/trans/hdinsight/09.md index 59a9587..b1d4866 100644 --- a/trans/hdinsight/09.md +++ b/trans/hdinsight/09.md @@ -1,6 +1,6 @@ -# 九、使用Hive存储输出 +# 九、使用 Hive 存储输出 -根据官方[阿帕奇Hive项目页面](http://hive.apache.org/): +根据官方[阿帕奇 Hive 项目页面](http://hive.apache.org/): [![http://hive.apache.oimg/hive_logo_medium.jpg](img/image009.jpg)](http://hive.apache.org/) diff --git a/trans/hdinsight/10.md b/trans/hdinsight/10.md index c0934fd..c6e3072 100644 --- a/trans/hdinsight/10.md +++ b/trans/hdinsight/10.md @@ -12,7 +12,7 @@ 只需为客户端机器下载并安装适当的驱动程序。 -### 为Hive建立一个 DSN +### 为 Hive 建立一个 DSN 连接到 Hive 的先决条件是设置 Excel 可以引用的 64 位系统数据源名称(DSN)。搜索 ODBC 会出现两个应用: -- GitLab