gpt4 book ai didi

java - 在 Spark sql 中按二进制类型过滤

转载 作者:行者123 更新时间:2023-12-05 07:38:27 28 4
gpt4 key购买 nike

我的模式中有一个代表 IP 地址的字段。我想使用 Binary Type来存储数据。

我想象的方式是如果我的 ip 是:50.100.150.200 我将把它保存为字节数组中的 [50,100,150,200](序列确实很重要,但我们可以将其排除在本问题的讨论之外)。

我的问题是查询的时候如何根据这一列进行筛选? (字符串并不真正符合目的)

例如我想运行以下查询:

SELECT * from table1 WHERE sourceip='50.100.150.200'

下面是一段代码来演示这个问题:

Bean 定义(用于模式创建):

    public static class MyBean1 implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private byte[] description;

public MyBean1(int id, String name, String description) {
this.id = id;
this.name = name;
this.description = description.getBytes();
}

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getDescription() {
return description;
}
public void setDescription(byte[] description) {
this.description = description;
}
}

演示代码(我想按描述过滤):

    List<MyBean1> newDebugData = new ArrayList<MyBean1>();
newDebugData.add(new MyBean1(1, "Arnold", "10.150.15.10"));
newDebugData.add(new MyBean1(1, "Bob", "10.150.15.11"));
newDebugData.add(new MyBean1(3, "Bob", "10.150.15.12"));
newDebugData.add(new MyBean1(3, "Bob", "10.150.15.13"));
newDebugData.add(new MyBean1(1, "Alice", "10.150.15.14"));

Dataset<Row> df2 = sqlContext.createDataFrame(newDebugData, MyBean1.class);
df2.createTempView("table1");
sqlContext.sql("select * from table1 where description='10.150.15.14'").show();

我收到错误:

differing types in '(table1.`description` = CAST('10.150.15.14' AS DOUBLE))'

最佳答案

这不是您问题的 100% 答案,但我希望指针能有所帮助。

下面这道题不是筛选,而是从数组中选择数据。 selecting a range of elements in an array spark sql

看起来那里有很多信息,包括一些关于使用 Spark SQL 查询数组的 UDF 的指南。

希望这对您有所帮助。

关于java - 在 Spark sql 中按二进制类型过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com