小编rjm*_*urt的帖子

如何创建AWS Glue表,其中分区具有不同的列?( 'HIVE_PARTITION_SCHEMA_MISMATCH')

根据此AWS论坛主题,是否有人知道如何使用AWS Glue创建AWS Athena表,其分区包含不同的模式(在这种情况下,表模式中的列的不同子集)?

目前,当我对此数据运行爬虫并在Athena中进行查询时,我收到错误 'HIVE_PARTITION_SCHEMA_MISMATCH'

我的用例是:

  • 分区代表天
  • 文件代表事件
  • 每个事件都是单个s3文件中的json blob
  • 事件包含列的子集(取决于事件的类型)
  • 整个表的"模式"是所有事件类型的完整列(这由Glue crawler正确组合)
  • 每个分区的"模式"是当天发生的事件类型的列的子集(因此在Glue中,每个分区可能具有与表模式不同的列子集)
  • 这种不一致导致我认为雅典娜的错误

如果我要手动编写模式,我可以做到这一点,因为只有一个表模式,JSON文件中缺少的键将被视为Null.

提前致谢!

amazon-s3 amazon-web-services amazon-athena aws-glue

28
推荐指数
2
解决办法
6155
查看次数

AWS API Gateway base64Decode产生乱码二进制文件?

我正在尝试从AWS API Gateway方法返回1px gif.

由于现在支持二进制数据,我使用以下"集成响应"映射返回image/gif:

$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
Run Code Online (Sandbox Code Playgroud)

但是,当我在Chrome中查看此内容时,我会看到返回以下二进制文件:

在此输入图像描述

代替:

在此输入图像描述

任何人都可以帮助我理解为什么这是乱码和错误的长度?或者我能做些什么来返回正确的二进制文件?还有其他一些我总是可以返回这个1px gif而不使用base64Decode函数?

非常感谢,这给我带来了很大的痛苦!

编辑

这个变得陌生.看起来问题不在于base64Decode,而在于二进制的一般处理.我在这篇博客文章Stack Overflow问题之后添加了一个Lambda后端(之前我正在使用Firehose).我按照本文档页面将图像设置为binaryMediaType .

这让我可以通过Gateway API从Lambda传递以下图像/ bmp像素,它可以正常工作:

exports.handler = function(event, context) {

  var imageHex = "\x42\x4d\x3c\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x06\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00";
  context.done(null, { "body":imageHex });

};
Run Code Online (Sandbox Code Playgroud)

但是,以下代表图像/ png或图像/ gif的图像在通过时会出现乱码:

exports.handler = function(event, context) {

//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b";
  var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x0a"
  context.done(null, { "body":imageHex });

};
Run Code Online (Sandbox Code Playgroud)

这似乎与另一个Stack Overflow问题是同一个问题,但我希望这可以通过Gateway API二进制支持来解决.不幸的是,image/bmp对我的用例不起作用,因为它不能透明......

如果它可以帮助任何人,这是一个很好的工具,用于在base64和hex之间进行转换.

amazon-web-services aws-api-gateway

15
推荐指数
2
解决办法
1万
查看次数

如何查看 VSCode 语言服务器进程的日志?

情况

我正在尝试编写VSCode 语言服务器协议 (LSP) 扩展。我让它运行如下:

  • lsp-server通过haskell-lsp-example-exe从终端运行启动的进程
  • 一个lsp-client在打字稿写入了,现在,基本上只是启动lsp-server(它是基于对LSP-样本回购)

lsp-server是推出如下:

# extension.ts
let serverOptions: ServerOptions = {
  run: {
    command: "haskell-lsp-example-exe"
  },
}
Run Code Online (Sandbox Code Playgroud)

lsp-client使用启动code --extensionDevelopmentPath="path/to/extension"

我可以看到它正确启动,我可以pid通过活动监视器找到它(我在 Mac 上)。

如何查看由 VSCode 生成的此进程的日志?

语境

我尝试了以下方法:

  • lsp-client/package.json我设置以下这些给我来回传递的消息。但不是 . 的日志lsp-server
    "languageServerExample.trace.server": {
      "scope": "window",
      "type": "string",
      "enum": [
        "off",
        "messages",
        "verbose"
      ],
      "default": "verbose",
      "description": "Traces the communication between VS Code and the …
Run Code Online (Sandbox Code Playgroud)

visual-studio-code vscode-extensions language-server-protocol

5
推荐指数
0
解决办法
575
查看次数