使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表.(例如请求).
但是,由于看起来这些依赖项未作为打包的一部分安装,因此我的部署函数失败了
'无法导入模块'处理程序':没有名为requests的模块'
我认为它是无服务器的pip安装,但我的结果zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)
是否有文件说明了执行此操作所需的内容及其工作原理?是pip安装这些还是在aws lambda端无服务器?
感谢谢谢!
Kinesis firehose将文件的持久性(在本例中为时间序列JSON)管理到由YYYY/MM/DD/HH划分的文件夹层次结构(直到24编号中的小时)......很棒.
如何使用Spark 2.0然后我可以读取这些嵌套的子文件夹并从所有叶子json文件创建一个静态Dataframe?数据框阅读器是否有"选项"?
我的下一个目标是将其作为流式DF,其中Firehose持久保存到s3中的新文件自然会成为使用Spark 2.0中新结构化流媒体的流数据帧的一部分.我知道这都是实验性的 - 希望有人之前使用S3作为流媒体文件源,其中数据被分成如上所述的文件夹.当然更喜欢直接使用Kinesis流,但是这个连接器上没有2.0的日期,所以Firehose-> S3是临时的.
ND:我正在使用databricks,它将S3安装到DBFS中,但当然可以很容易地成为EMR或其他Spark提供商.很高兴看到一个笔记本电脑,如果一个人可以分享给出一个例子.
干杯!
apache-spark apache-spark-sql databricks spark-structured-streaming
有谁知道一个Python库以XSLT / Velocity模板样式将JSON转换为JSON?
JSON +转换模板= JSON(新)
谢谢!
我已经为JSON Schema配置了intelliJ。
https://www.jetbrains.com/help/idea/2016.2/json-schema.html
这样我的有效JSON模式应该针对它检查JSON-但是,如果我编写无效的json(语法正确,而不是针对模式语义),intelliJ不会检测到它,只是表明它是有效的?
有任何想法吗?
是否有快捷键来触发给定文件的模式验证?
谢谢
使用 BQ 作业加载机制(即非流式插入),可以使用作业请求中的以下设置/选项来启用动态模式演化:
配置.load.schemaUpdateOptions[]
ALLOW_FIELD_ADDITION:允许向架构添加可为空的字段。ALLOW_FIELD_RELAXATION:允许将原始模式中的必填字段放宽为可为空。
这是非常强大的,可以轻松地允许向后兼容更改。我们希望转向流式插入模型,但似乎不支持此功能?
我已经查看了用于插入的表 API(又名“流式插入”),但似乎这不是使用此方法的选项?
我错过了这个吗?如果没有(已删除),它是否在路线图上?
谢谢!:)
SQL上有很多很棒的帖子可以选择唯一的行并写入(截断)表格,以便删除dus.例如
WITH ev AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
SELECT
* EXCEPT(rowNum)
FROM
ev
WHERE rowNum = 1
Run Code Online (Sandbox Code Playgroud)
我试图使用DML和DELETE稍微改变一下(例如,如果你不想使用BQ savedQuery,只需执行SQL).我想做的大致是:
WITH dup_events AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY loadTime DESC) AS rowNum
FROM `duplicates`
)
DELETE FROM
dup_events
WHERE rowNum > 1
Run Code Online (Sandbox Code Playgroud)
但在控制台中出现此错误:
Syntax error: Expected "(" or keyword SELECT but got keyword DELETE at [10:1]
Run Code Online (Sandbox Code Playgroud)
可以使用DELETE实现(standardSQL)吗?
谢谢!
在我们的BQ设计中,我们有一个客户表(嵌套原始数据),该表是从我们的微服务层(消耗运动力蒸汽)中获取的事件,其中每个事件都有该事件所针对实体的最新实体快照(在更改)。我猜是一种现代的变更数据捕获。
每个事件中的最新快照都是我们填充BigQuery的方式-它将其提取并以APPEND ONLY模式加载(通过apache spark结构化连接器连接)到biqQuery中。(这与更改和更新给定ID的一行不同)
因此,仅在追加的情况下,此表的大小当然会随着时间的推移而增长-事件中每次更改的条目。但是,它很好地是一个完整的,按时间顺序排列的客户状态和变更(我们需要具备)的序列,因此是不变的。我们可以通过重播事件来重建整个仓库,例如……足够的上下文。
这样做的一个后果是,将事实加载到BigQuery中可能会导致重复(例如,如果发生火花错误并重试了一个微型批处理,则按作业加载时BQ并不是幂等的结构化流宿,或者仅仅是由于其通常可能的分布式性质)。SteamingInserts可能会在以后研究,因为它有助于重复数据删除.....
这种体系结构的结果是我需要原始时间序列数据(记住有时可能有重复项)的视图,这些视图在这些条件下会返回LATEST记录。
最新时间由客户记录(metadata.lastUpdated)上的元数据结构字段确定-带有MAX(metadata.lastUpdated)的行是最新的。这是我们的MS层所保证的。
这也是一个真实的事件时间时间戳。表ID DAY已分区,并具有_PARTITIONTIME列,但这仅是摄取时间,我无法使用它。当我可以指定要用作分区时间的列时很棒!(愿望清单)。
重复的将是具有相同客户'id'和'metadata.lastUpdated'的两行-因此MAX(metadata.lastUpdated)可能返回2行,因此我需要使用
ROW_NUMBER()OVER(PARTITION BY ....所以我可以选择rowNum = 1
在我看来,也只选择有凹痕的1行。
好的,足够多的单词/上下文(对不起),下面是我的SQL以获得最新的视图。它可以通过我的测试运行,但是当表的大小/行数变大时,我不确定这是实现结果的最有效方法,并且想知道是否有任何BigQuery棺材可能更有效/更聪明SQL要这样做吗?为什么说SQL没问题,但绝不是性能调优的专家,可以肯定,尤其是为BQ性能调优做SQL的最佳方法。
我只是希望能够将所有数据存储在一个表中,并依靠dremel引擎的功能来查询它,而不是需要多个表或进行任何过于复杂的操作。
所以我的SQL如下。注意-我的时间戳记是作为字符串提取的,因此也需要在视图中对其进行解析。
WITH
cus_latest_watermark AS (
SELECT
id,
MAX(PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%E*S%Ez", metadata.lastUpdated)) AS maxLastUpdatedTimestampUTC
FROM
`project.dataset.customer_refdata`
GROUP BY
id ),
cust_latest_rec_dup AS (
SELECT
cus.*,
ROW_NUMBER() OVER (PARTITION BY cus.id ORDER BY cus.id) AS rowNum
FROM
`project.dataset.customer_refdata` cus
JOIN
cus_latest_watermark
ON
cus.id = cus_latest_watermark.id
AND PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%E*S%Ez", cus.metadata.lastUpdated) = cus_latest_watermark.maxLastUpdatedTimestampUTC)
SELECT
cust_latest_rec_dup.* EXCEPT(rowNum)
FROM
cust_latest_rec_dup
WHERE
rowNum = 1
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个UDF使用scala内置toArray
函数将Map(在这种情况下为String-> String)转换为Array
val toArray = udf((vs: Map[String, String]) => vs.toArray)
Run Code Online (Sandbox Code Playgroud)
但是,数组结构的元组键名称为_1
,值名称为_2
。
如何更改UDF定义,使键名是“ key”,值名是“ value”,作为UDF定义的一部分?
[{"_1":"aKey","_2":"aValue"}]
Run Code Online (Sandbox Code Playgroud)
至
[{"key":"aKey","value":"aValue"}]
Run Code Online (Sandbox Code Playgroud) 通过CLI在此发表了一些文章,但不确定通过UI以及新的alpha UI即将发布的当前状态。
在2天的删除宽限期限制内,是否有办法仅使用BQ UI和standardSQL来还原已删除的表,以进行查询并保存为实质上的“还原”,而不是GCP CLI?即
select *
from deleted-table@timstamp
Run Code Online (Sandbox Code Playgroud)
然后将结果保存在UI中为原始表名?
鉴于我们大多数人都在BQ UI中花费时间进行其他BQ工作,因此这使我感到更简单。
有什么想法吗?
谢谢
apache-spark ×2
json ×2
aws-lambda ×1
databricks ×1
jsonschema ×1
python ×1
scala ×1
velocity ×1