我正在尝试将内存中的JSON 字符串快速读入Spark DataFrame中:
var someJSON : String = getJSONSomehow()
val someDF : DataFrame = magic.convert(someJSON)
Run Code Online (Sandbox Code Playgroud)
我花了很多时间看Spark API,我能找到的最好的就是使用sqlContext这样的:
var someJSON : String = getJSONSomehow()
val tmpFile : Output = Resource
.fromFile(s"/tmp/json/${UUID.randomUUID().toString()}")
tmpFile.write("hello")(Codec.UTF8)
val someDF : DataFrame = sqlContext.read().json(tmpFile)
Run Code Online (Sandbox Code Playgroud)
但这感觉有点尴尬/不稳定,并施加以下限制:
所以我问:是否有一种直接且更有效的方法将JSON字符串转换为Spark DataFrame?
Scala 2.10在这里使用Spark 1.6.2.我有一个类似(但不相同)的问题作为这一个,然而,接受的答案是不是SSCCE并承担一定的"前期知识"关于星火; 因此我无法复制或理解它.更重要的是,该问题也仅限于向现有数据框添加新列,而我需要为数据框中的所有现有行添加列和值.
所以我想在现有的Spark DataFrame中添加一个列,然后将该新列的初始('default')值应用于所有行.
val json : String = """{ "x": true, "y": "not true" }"""
val rdd = sparkContext.parallelize(Seq(json))
val jsonDF = sqlContext.read.json(rdd)
jsonDF.show()
Run Code Online (Sandbox Code Playgroud)
当我运行时,我得到以下作为输出(通过.show()):
+----+--------+
| x| y|
+----+--------+
|true|not true|
+----+--------+
Run Code Online (Sandbox Code Playgroud)
现在我想jsonDF在创建它之后添加一个新字段,而不修改json字符串,这样得到的DF将如下所示:
+----+--------+----+
| x| y| z|
+----+--------+----+
|true|not true| red|
+----+--------+----+
Run Code Online (Sandbox Code Playgroud)
意思是,我想z在DF类型中添加一个新的" "列StringType,然后默认所有行包含z-value "red".
从另一个问题我将以下伪代码拼凑在一起:
val json : String = """{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用硬编码的String并将其转换为1行Spark DataFrame(具有单列类型StringType),以便:
String fizz = "buzz"
Run Code Online (Sandbox Code Playgroud)
将导致DataFrame的.show()方法如下所示:
+-----+
| fizz|
+-----+
| buzz|
+-----+
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最好的尝试是:
val rawData = List("fizz")
val df = sqlContext.sparkContext.parallelize(Seq(rawData)).toDF()
df.show()
Run Code Online (Sandbox Code Playgroud)
但是我得到以下编译器错误:
java.lang.ClassCastException: org.apache.spark.sql.types.ArrayType cannot be cast to org.apache.spark.sql.types.StructType
at org.apache.spark.sql.SQLContext.createDataFrame(SQLContext.scala:413)
at org.apache.spark.sql.SQLImplicits.rddToDataFrameHolder(SQLImplicits.scala:155)
Run Code Online (Sandbox Code Playgroud)
关于我哪里出错的想法?另外,如何设置"buzz"列的行值fizz?
试:
sqlContext.sparkContext.parallelize(rawData).toDF()
Run Code Online (Sandbox Code Playgroud)
我得到一个DF看起来像:
+----+
| _1|
+----+
|buzz|
+----+
Run Code Online (Sandbox Code Playgroud) Spring 3.2.15,这里基于 MVC 的 REST API(不是Spring Boot,遗憾的是!)。我正在尝试实现一个满足以下条件的异常映射器/处理程序:
MyAppResponse(见下文);和BlahException)必须映射到 HTTP 422FizzBuzzException有自己的状态映射方案:
FizzBuzzException-> HTTP 401FooBarException-> HTTP 403OmgException-> HTTP 404对象所在位置MyAppResponse:
// Groovy pseudo-code
@Canonical
class MyAppResponse {
String detail
String randomNumber
}
Run Code Online (Sandbox Code Playgroud)
看起来也许能ResponseEntityExceptionHandler为我做到这一点,但我并没有透过树木看到森林,因为它是如何传递参数的。我希望我能做这样的事情:
// Groovy-pseudo code
@ControllerAdvice
class MyAppExceptionMapper extends ResponseEntityExceptionHandler {
ResponseEntity<Object> handleFizzBuzzException(FizzBuzzException …Run Code Online (Sandbox Code Playgroud) 我有2个由3个ZK节点支持的Kafkas。我想通过在每个节点上本地运行kafka-console-producer和-consumer来测试Kafka节点。
因此,我使用2个不同的终端通过SSH进入我的Kafka经纪人之一。在1号航站楼中,我按如下方式运行使用者:
/opt/kafka/bin/kafka-console-consumer.sh --zookeeper a.b.c.d:2181 --topic test1
Run Code Online (Sandbox Code Playgroud)
其中abcd是我的3个ZK节点之一的专用IP。
然后在2号航站楼中,我像这样运行生产者:
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test1
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地启动消费者和生产者。
但是,在生产者终端中,如果我通过输入一些文本(例如“ hello”)并按Enter键来在test1主题上“触发”消息,我将立即开始看到以下内容:
[2017-01-17 19:45:57,353] WARN Error while fetching metadata with correlation id 0 : {test1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2017-01-17 19:45:57,372] WARN Error while fetching metadata with correlation id 1 : {test1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2017-01-17 19:45:57,477] WARN Error while fetching metadata with correlation id 2 : {test1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2017-01-17 19:45:57,582] WARN Error while fetching metadata with correlation id 3 : {test1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
...and it keeps going!
Run Code Online (Sandbox Code Playgroud)
而且,在消费者终端中,即使启动消费者时没有出现任何错误,大约30秒后,我也会收到以下警告消息:
[2017-01-17 19:46:07,292] …Run Code Online (Sandbox Code Playgroud) 我想我想在这里鱼和熊掌兼得,但我们会看看是否有一个合理的解决方案来满足我正在寻找的问题。我有一个 Spring Boot/JPA/Hibernate 应用程序,它将与 MySQL 作为其后备存储进行通信。我有几种情况,从 OOP 的角度来看,我的实体类形成了一个父/子层次结构,如下所示:
// Groovy pseudo-code!
class Vehicle {
Long id
Long maxSpeed
String make
String model
}
class Motorcycle extends Vehicle {
Boolean isTwoStroke
}
class Car extends Vehicle {
Boolean hasLeatherInterior
}
Run Code Online (Sandbox Code Playgroud)
通常,在 JPA 之外,我可能会像这样设计各自的表:
CREATE TABLE motorcycles (
motorcycle_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
motorcycle_max_speed BIGINT UNSIGNED,
motorcycle_make VARCHAR(50) NOT NULL,
motorcycle_model VARCHAR(50) NOT NULL,
motorcycle_is_two_speed BIT NOT NULL,
# PK, FK, UC, index constraints down here (omitted for brevity)
);
CREATE …Run Code Online (Sandbox Code Playgroud) 我已经对一个示例应用程序进行了Docker化并将其配置为登录到STDOUT。然后,我运行容器而不指定logging-driver。根据Docker文档,应将STDOUT从容器中收集到JSON文件中...
但是它们在日志记录文档中都没有告诉您在哪里可以找到此JSON文件!
有什么想法可以在主机上找到该文件并检查其内容吗?
大约一年前,我对构建自己的准系统增强现实 (AR) 库很感兴趣。我的目标是能够拍摄某物(任何真实的东西)的视频,然后能够在视频中放置增强(实际上并不存在的 3D 对象)。例如,我可能会拍摄我的客厅的视频,然后通过这个 AR 库/工具,我可以添加一个坐在咖啡桌上的怪物的 3D 头像。因此,在对这个主题或计算机视觉总体一无所知的情况下,我决定采用以下策略:
经过几个艰难的几周(计算机视觉很难!),我得到了以下一系列工具,并取得了不同程度的成功:
大约 30% 的时间里,这条管道运行得非常好!这是我家前面的模型。您可以看到我的 3D 前院、我儿子的 3D 剧场,甚至可以看到门窗!
大约 70% 的情况下,管道会因难以辨认的错误而失败,或者生成看起来像抽象画的东西。此外,即使涉及自动化脚本,该工具也需要大约 30 分钟才能生成最终的 3D 纹理模型......非常慢。
好吧,看来Google ARCode和Apple ARKit抢先了我!这些框架可以从您的智能手机获取实时视频源,并准确地完成我大约一年前一直试图完成的任务:实时 …
computer-vision augmented-reality 3d-reconstruction structure-from-motion arkit
git 新手,正在尝试学习 GitFlow。使用 GitFlow,您经常会从develop分支上切下一个发布分支,以便您可以隔离新更改的子集并将它们部署到某个临时/非生产环境。但我实际上找不到可靠的文档来说明剪切这些发布分支的正确过程(命令方面)。是吗:
git checkout develop
git pull
git checkout -b release/1.1.3
git add .
git commit -m "Cutting release branch for v1.1.3."
git push
Run Code Online (Sandbox Code Playgroud)
或者是:
git checkout develop
git pull
git checkout -b release/1.1.3
git push origin release/1.1.3
Run Code Online (Sandbox Code Playgroud)
或者是别的什么?为什么?!
我有一个 Angular webapp,它使用 Spring Boot REST 服务作为其支持的 web 服务。
我正在为用户添加“个人资料”功能,作为其中的一部分,我想建立一个端点,允许用户为自己上传个人资料图像并立即将这些文件上传到 S3(我将在其中托管所有图像)。
看几个Spring Boot/文件上传教程:
似乎处理此类文件上传的标准方法是公开一个接受MultipartFiles如下的控制器端点:
@RestController
@RequestMapping("/v1/profiles")
public class ProfileController {
@PostMapping("/photo")
public ResponseEntity uploadProfilePhoto(@RequestParam("mpf") MultipartFile mpf)
// ...
}
Run Code Online (Sandbox Code Playgroud)
查看所有这些代码,我无法判断该MultipartFile实例是否在内存中,或者 Spring 是否将其位置设置/tmp在磁盘上的某个位置(可能在?下)。
查看AWS S3 Java SDK 教程,上传基于磁盘的文件的标准方法似乎是这样的:
File file = new File(uploadFileName);
s3client.putObject(new PutObjectRequest(bucketName, keyName, file));
Run Code Online (Sandbox Code Playgroud)
所以看起来我必须在磁盘上有一个文件才能上传到 S3。
我想知道是否有办法将所有内容保存在内存中,或者这是否是一个坏主意,我应该坚持使用磁盘/File实例!
MultipartFile)保存在控制器方法中的内存中?MultipartFile向 S3提供(也许通过序列化?!)一个实例PutObjectRequest?apache-spark ×3
scala ×3
amazon-s3 ×1
apache-kafka ×1
arkit ×1
dataframe ×1
docker ×1
exception ×1
git ×1
git-flow ×1
github ×1
groovy ×1
hibernate ×1
httpresponse ×1
inheritance ×1
java ×1
jpa ×1
json ×1
logging ×1
multipart ×1
spring ×1
spring-boot ×1
spring-mvc ×1