我很难使用Node.js客户端库对Google Analytics Reporting API v4进行身份验证.我尝试了所有方法,从JWT(服务令牌:JSON和P12),API密钥和OAuth 2.0开始,但我从未成功通过身份验证.
我在开发人员控制台中激活了API,创建了ID并授予了我的Google Analytics(分析)属性和视图的权限.我成功获得了服务帐户的授权和访问令牌,但我不知道如何使用它来对Analytics Reporting API v4进行身份验证.
我被困在401错误消息前面:"请求没有有效的身份验证凭据".我尝试使用JWT模仿用户,但随后服务帐户未经授权.
使用Node.js客户端库和JWT身份验证:
var google = require('googleapis.js');
var viewID = 'XXXXXXXXX'; // Google Analytics view ID
var key = require('service_account.json'); // Service account
var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null);
var oauth2Client = new google.auth.OAuth2();
jwtClient.authorize(function(err, result) {
if (err) {
console.log('Unauthorize');
console.log(err);
return;
}
oauth2Client.setCredentials({
access_token: result.access_token
});
//Need to authenticate somewhere near here
var analytics = google.analyticsreporting('v4');
//Or here
var req = …Run Code Online (Sandbox Code Playgroud) 我正在尝试对 cassandra 表中的数据帧执行大量操作,然后将其保存在另一个表中。其中一项操作如下:
val leadWindow = Window.partitionBy(col("id")).orderBy(col("timestamp").asc).rowsBetween(Window.currentRow, 2)
df.withColumn("lead1", lag(sum(col("temp1")).over(leadWindow), 2, 0))
Run Code Online (Sandbox Code Playgroud)
当我运行我的工作时,我收到一个异常,说lag无法评估该操作。
2018-10-08 12:02:22 INFO Cluster:1543 - New Cassandra host /127.0.0.1:9042 added
2018-10-08 12:02:22 INFO CassandraConnector:35 - Connected to Cassandra cluster: Test Cluster
2018-10-08 12:02:23 INFO CassandraSourceRelation:35 - Input Predicates: [IsNotNull(ts)]
2018-10-08 12:02:23 INFO CassandraSourceRelation:35 - Input Predicates: [IsNotNull(ts)]
Exception in thread "main" java.lang.UnsupportedOperationException: Cannot evaluate expression: lag(input[43, bigint, true], 2, 0)
at org.apache.spark.sql.catalyst.expressions.Unevaluable$class.doGenCode(Expression.scala:258)
at org.apache.spark.sql.catalyst.expressions.OffsetWindowFunction.doGenCode(windowExpressions.scala:326)
at org.apache.spark.sql.catalyst.expressions.Expression$$anonfun$genCode$2.apply(Expression.scala:107)
at org.apache.spark.sql.catalyst.expressions.Expression$$anonfun$genCode$2.apply(Expression.scala:104)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.catalyst.expressions.Expression.genCode(Expression.scala:104)
at org.apache.spark.sql.catalyst.expressions.BinaryExpression.nullSafeCodeGen(Expression.scala:496)
at …Run Code Online (Sandbox Code Playgroud) 我想在 Airflow 任务持续时间图表上显示超过 365 个 dagrun。我找到了source中定义下拉列表值的位置,但我不想为此分叉整个项目。还有其他办法吗?
我正在从@nuxtjs/dotenv模块迁移到 Nuxt 新的运行时配置。我尝试遵循官方指南,但找不到指定 env 文件路径的方法,并且我的默认 .env 文件在构建时未加载。
有没有办法在不使用 @nuxtjs/dotenv 的情况下在 nuxt.config.js 中设置 .env 文件路径?
我使用DataStax Spark 连接器来填充 Cassandra 集群并处理不同作业中的数据(由于 Spark 不支持流处理的一些操作,例如双重聚合)。所以我想将不同作业的数据存储在同一个表中。假设第一个流作业在此表中插入一行(使用 foreach 编写器,因为连接器尚不支持流式写入)。
INSERT INTO keyspace_name.table_name (id, col1, col2) VALUES ("test", 1, null);
Run Code Online (Sandbox Code Playgroud)
如果我附加(更新插入)其中包含空列的数据集,而 Cassandra 中该行已经有非空值,该怎么办?
// One row of the dataset = "test", null, 2
dataset.write
.format("org.apache.spark.sql.cassandra")
.option("keyspace", keyspace)
.option("table", table)
.mode(SaveMode.Append)
.save()
Run Code Online (Sandbox Code Playgroud)
如果我正确理解文档,以前的非空值将被新的空值覆盖?如果是这样,有没有办法保留现有的非空值?或者我是否必须将每个作业的数据存储在单独的表中?
scala insert-update cassandra apache-spark spark-cassandra-connector