我可以很容易地将Scala中的DataFrame转换为Dataset:
case class Person(name:String, age:Long)
val df = ctx.read.json("/tmp/persons.json")
val ds = df.as[Person]
ds.printSchema
Run Code Online (Sandbox Code Playgroud)
但在Java版本中我不知道如何将Dataframe转换为Dataset?任何的想法?
我的努力是:
DataFrame df = ctx.read().json(logFile);
Encoder<Person> encoder = new Encoder<>();
Dataset<Person> ds = new Dataset<Person>(ctx,df.logicalPlan(),encoder);
ds.printSchema();
Run Code Online (Sandbox Code Playgroud)
但是编译器说:
Error:(23, 27) java: org.apache.spark.sql.Encoder is abstract; cannot be instantiated
Run Code Online (Sandbox Code Playgroud)
基于@Leet-Falcon答案的解决方案:
DataFrame df = ctx.read().json(logFile);
Encoder<Person> encoder = Encoders.bean(Person.class);
Dataset<Person> ds = new Dataset<Person>(ctx, df.logicalPlan(), encoder);
Run Code Online (Sandbox Code Playgroud) 我写过火花工作:
object SimpleApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
val sc = new SparkContext(conf)
val ctx = new org.apache.spark.sql.SQLContext(sc)
import ctx.implicits._
case class Person(age: Long, city: String, id: String, lname: String, name: String, sex: String)
case class Person2(name: String, age: Long, city: String)
val persons = ctx.read.json("/tmp/persons.json").as[Person]
persons.printSchema()
}
}
Run Code Online (Sandbox Code Playgroud)
在IDE中运行main函数时,发生2错误:
Error:(15, 67) Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported …
Run Code Online (Sandbox Code Playgroud) scala apache-spark apache-spark-dataset apache-spark-encoders
任何人都可以描述(struct sockaddr *)&server
这里的运作方式 是否有可能将更大的结构转换为更小的结构?
看到这些结构:
// IPv4 AF_INET sockets:
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct in_addr {
unsigned long s_addr; // load with inet_pton()
};
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
Run Code Online (Sandbox Code Playgroud)
这是主要计划:
int main(int argc , char …
Run Code Online (Sandbox Code Playgroud) 例:
迭代器是纯粹的抽象:任何行为类似于迭代器的东西都是迭代器.
这是什么意思?
我正在阅读C++标准库:教程和参考书.在地图示例中:
typedef map<string,float> StringFloatMap;
StringFloatMap coll;
//insert some elements into the collection
coll["VAT"] = 0.15;
coll["Pi"] = 3.1415;
coll["an arbitrary number"] = 4983.223;
coll["Null"] = 0;
Run Code Online (Sandbox Code Playgroud)
作者说:
这里,索引用作键,可以是任何类型.这是关联数组的接口.关联数组是索引可以是任意类型的数组.
任何人都可以解释一下,关联数组中任意类型意味着什么?
我写过这个钩子:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/skbuff.h>
#include <linux/mutex.h>
static struct nf_hook_ops nfho;
static struct mutex critical_section;
unsigned int hook_func(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *)) {
mutex_lock(&critical_section);
mutex_unlock(&critical_section);
return NF_ACCEPT;
}
int init_module() {
nfho.hook = hook_func;
nfho.hooknum = NF_INET_PRE_ROUTING;
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST;
mutex_init(&critical_section);
nf_register_hook(&nfho);
return 0;
}
void cleanup_module() {
nf_unregister_hook(&nfho);
}
Run Code Online (Sandbox Code Playgroud)
init部分:
mutex_init(&queue_critical_section);
mutex_init(&ioctl_critical_section);
Run Code Online (Sandbox Code Playgroud)
我已经定义了静态变量:
static struct mutex queue_critical_section; …
Run Code Online (Sandbox Code Playgroud) c netfilter linux-device-driver linux-kernel mutual-exclusion
在Scala Collection文档中,这个问题有一些线索:
Trait Seq有两个子线段LinearSeq和IndexedSeq.这些不添加任何新操作,但每个都提供不同的性能特征:线性序列具有有效的头部和尾部操作,而索引序列具有有效的应用,长度和(如果可变的)更新操作.
但这不能解决我何时使用IndexedSeq
而不是Seq
?我需要一些真实的例子,IndexedSeq
或者LinearSeq
这些集合比这些更好Seq
.
我很困惑,不知道选择哪个:SWT/JFace或JavaFX.哪一个更好?我知道SWT是原生的,但是JavaFX本机还是不是原生的?使用原生UI是重要的,还是JavaFX是最佳选择?
我想把skb推到prerouting
Linux网络堆栈.有没有办法做到这一点?我使用dev_queue_xmit()
和netif_rx()
功能,但我不认为他们可以推动skb在prerouting
Linux网络堆栈.
c kernel network-programming linux-device-driver linux-kernel