小编Jos*_*one的帖子

通过Spark SQL批量迁移数据

我目前正在尝试通过Spark SQL将非常大的MySQL表的内容批量迁移到镶木地板文件中.但是当这样做时,即使将驱动程序的内存限制设置得更高(我在本地模式下使用spark),我也会快速耗尽内存.示例代码:

Dataset<Row> ds = spark.read()
    .format("jdbc")
    .option("url", url)
    .option("driver", "com.mysql.jdbc.Driver")
    .option("dbtable", "bigdatatable")
    .option("user", "root")
    .option("password", "foobar")
    .load();

ds.write().mode(SaveMode.Append).parquet("data/bigdatatable");
Run Code Online (Sandbox Code Playgroud)

似乎Spark试图将整个表内容读入内存,这样做不会很好.那么,通过Spark SQL进行批量数据迁移的最佳方法是什么?

apache-spark apache-spark-sql spark-dataframe

7
推荐指数
1
解决办法
4323
查看次数

Java 8中的惯用语集合迭代

什么被认为是Java 8中Collection的惯用迭代,为什么?

for (String foo : foos) {
  String bar = bars.get(foo);
  if (bar != null)
    System.out.println(foo);
}
Run Code Online (Sandbox Code Playgroud)

要么

foos.forEach(foo -> {
  String bar = bars.get(foo);
  if (bar != null)
    System.out.println(foo);
});
Run Code Online (Sandbox Code Playgroud)

java java-8

3
推荐指数
1
解决办法
872
查看次数

使用ASM跟踪字节码中的方法调用参数

如何检查类的字节码(使用诸如ASM之类的东西)来了解哪些初始值传递给方法?

例如:给定一些将值互相传递的方法:

void m1(Object o) {
  Object v = o;
  m2(v);
  m2("box");
}

void m2(Object o) {
  Object v = o;
  m3(x);
}  

void m3(Object o) {
}
Run Code Online (Sandbox Code Playgroud)

还有一些方法调用,都在同一个类中定义:

{
  Object foo = "foo";
  m1(foo);
  m2("bar");
  m3("baz");
}
Run Code Online (Sandbox Code Playgroud)

我怎么可以检查类的字节码得知m3将与值被称为4倍"foo","box","bar""baz"

java bytecode-manipulation java-bytecode-asm

3
推荐指数
1
解决办法
1109
查看次数

使用 lxc 用户通过 SSH 连接到 lxc 容器

我注意到我用来连接到新创建的 LXC 容器的用户名/密码lxc-console不适用于 ssh(在容器中运行 sshd)。当我尝试时,我明白Permission denied为什么会这样,我怎样才能让它工作?

ssh lxc

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