小编Pin*_* Li的帖子

如何将空地图类型列添加到 DataFrame?

我想向数据框添加一个新的地图类型列,如下所示:

|-- cMap: map (nullable = true)
|    |-- key: string
|    |-- value: string (valueContainsNull = true)
Run Code Online (Sandbox Code Playgroud)

我试过代码:

df.withColumn("cMap", lit(null).cast(MapType)).printSchema
Run Code Online (Sandbox Code Playgroud)

错误是:

<console>:132: error: overloaded method value cast with alternatives:
(to: String)org.apache.spark.sql.Column <and>
(to: org.apache.spark.sql.types.DataType)org.apache.spark.sql.Column
cannot be applied to (org.apache.spark.sql.types.MapType.type)
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以将新列转换为 Map 或 MapType?谢谢

scala apache-spark apache-spark-sql

7
推荐指数
2
解决办法
4720
查看次数

如何更改cmake protobuff工作目录/路径?

我想使用 cmake 从 protobuf 编译并生成库。但我无法在 CMakeLists.txt 中分配原始文件路径。问题是使用从父文件夹的相对导入(导入“modules/common/proto/abc.pb.h”)的其他 .proto 文件无法正确识别导入的原型。

\n\n

直接 protoc 命令中的不同文件路径将生成不同的命名空间:

\n\n
protoc --cpp_out=proto proto/person.proto (namespace is protobuf_proto_2fperson_2eproto)\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
protoc --cpp_out=./ person.proto (namespace is protobuf_person_2eproto)\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何在 CMakeLists.txt 中制作它并使用像 protobuf_proto_2fperson_2eproto 这样的结构化命名空间生成 .cc 文件?谢谢。

\n\n

我的文件列表如下:

\n\n
../test/\n`-- proto\n    |-- CMakeLists.txt\n    |-- demo.proto\n    `-- person.proto\n
Run Code Online (Sandbox Code Playgroud)\n\n

在演示.proto中:

\n\n
syntax = "proto2";\n\npackage tutorial;\n\nimport "proto/person.proto";\n\nmessage AddressBook {\n  repeated Person people = 1;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

亲自.proto:

\n\n
syntax = "proto2";\n\npackage tutorial;\n\nmessage Person {\n  required string name = 1;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的CMakeLists.txt是\xef\xbc\x9a

\n\n …

c++ cmake protocol-buffers

6
推荐指数
0
解决办法
1001
查看次数

Javascript:数组不为空,但大小为0

我在Javascript中创建一个数组.我想将数组用于键值对.

我可以成功添加新项目并删除项目,但它的长度始终为0.

实际上我遇到的问题是当我想将它转换为JSON字符串时,它显示空字符串:"[]".我只是想知道他们是否相关.我也想知道为什么我不能转换它.

下面是调试信息,它显示数组包含3个对象但长度为0.浏览器是用于Ubuntu的Firefox 44.0.

谢谢!

长度为<code> 0 </ code>且属性<code> 1454073967313 </ code>,<code> 1454073968645 </ code>和<code> 1454073969737 </ code>的数组


研究员@georg的想法,我将索引限制在1000并将其余代码保留为以前.一切正常,包括JSON部分.下图显示在我的数组中,实际有4个元素,最大索引是805.

在此输入图像描述

我学到的一件事是Javascript数组的长度不是实际大小,而是最大索引号.

最新的发现,数组真的和最大的索引号一样长.元素的其余部分是Null.

javascript arrays json

4
推荐指数
1
解决办法
3003
查看次数

如何在groupBy之后汇总地图列?

我需要合并两个数据框并通过键组合列。这两个数据格式具有相同的架构,例如:

root
|-- id: String (nullable = true)
|-- cMap: map (nullable = true)
|    |-- key: string
|    |-- value: string (valueContainsNull = true)
Run Code Online (Sandbox Code Playgroud)

我想按“ id”分组并将“ cMap”聚合在一起以进行重复数据删除。我尝试了代码:

val df = df_a.unionAll(df_b).groupBy("id").agg(collect_list("cMap") as "cMap").
rdd.map(x => {
    var map = Map[String,String]()
    x.getAs[Seq[Map[String,String]]]("cMap").foreach( y => 
        y.foreach( tuple =>
        {
            val key = tuple._1
            val value = tuple._2
            if(!map.contains(key))//deduplicate
                map += (key -> value)
        }))

    Row(x.getAs[String]("id"),map)
    })
Run Code Online (Sandbox Code Playgroud)

但是似乎collect_list不能用于映射结构:

org.apache.spark.sql.AnalysisException: No handler for Hive udf class org.apache.hadoop.hive.ql.udf.generic.GenericUDAFCollectList because: Only primitive type arguments are …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

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

启动服务时不允许绑定到服务意图

我现在正在开发一个android应用程序。当我要启动服务时,我遇到问题:不允许绑定到服务意图。该服务是Yotaphone背屏服务。

我正在搜索问题,信息很少,大多数都不是同类问题。我不知道哪一部分出了问题。

我按照指示进行操作:http : //mwiki.yotaphone.com/wiki/Building_First_App

MainActivity中的onStart()函数:

@Override
protected void onStart() {
    super.onStart();
    Intent bsIntent = new Intent(this, MyBSActivity.class);
    this.startService(bsIntent);

}
Run Code Online (Sandbox Code Playgroud)

Yotaphone背屏服务:

public class MyBSActivity extends BSActivity {
@Override
protected void onBSCreate() {
    super.onBSCreate();
    setBSContentView(R.layout.bs_activity);
}}
Run Code Online (Sandbox Code Playgroud)

错误说明:

04-24 18:27:12.659  28763-28763/com.pli.yotaphone2 E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.pli.yotaphone2, PID: 28763
java.lang.RuntimeException: Unable to start service com.pli.yotaphone2.MyBSActivity@42624840 with Intent { cmp=com.pli.yotaphone2/.MyBSActivity }: java.lang.SecurityException: Not allowed to bind to service Intent { act=yotaphone.intent.action.GET_SDK_BINDER }
        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2735)
        at android.app.ActivityThread.access$2100(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at …
Run Code Online (Sandbox Code Playgroud)

java android securityexception android-intent android-service

0
推荐指数
1
解决办法
4469
查看次数