小编use*_*871的帖子

如何从 avro 数据中提取文档并将其添加到数据框中

我正在尝试基于 HDFS 中的 avro 文件创建 hive/impala 表。进行转换的工具是 Spark。

我无法使用spark.read.format("avro")将数据加载到数据框中,因为这样部分doc(列的描述)将会丢失。我可以通过执行以下操作来查看文档:

 input = sc.textFile("/path/to/avrofile")
 avro_schema = input.first() # not sure what type it is 
Run Code Online (Sandbox Code Playgroud)

问题是,它是一个嵌套架构,我不确定如何遍历它以将其映射doc到数据帧中的列描述。我想要doc表的列描述。例如,输入模式如下所示:

"fields": [
    {
     "name":"productName",
     "type": [
       "null",
       "string"
      ],
     "doc": "Real name of the product"
     "default": null
    },
    {
     "name" : "currentSellers",
     "type": [
        "null",
        {
         "type": "record",
         "name": "sellers",
         "fields":[
             {
              "name": "location",
              "type":[
                 "null",
                  {
                   "type": "record"
                   "name": "sellerlocation",
                   "fields": [
                      {
                       "name":"locationName",
                       "type": [
                           "null",
                           "string" …
Run Code Online (Sandbox Code Playgroud)

python hive avro apache-spark pyspark

6
推荐指数
1
解决办法
1946
查看次数

从高度嵌套的数据中选择列

对于下面从 avro 文件生成的数据框,我尝试以列表或其他格式获取列名称,以便我可以在 select 语句中使用它。node1node2具有相同的元素。例如,我知道我们可以这样做df.select(col('data.node1.name')),但我不确定

  1. 如何一次选择所有列而不对所有列名称进行硬编码,以及
  2. 如何处理嵌套部分。我认为为了使其可读,应该将productvaluesporders选入单独的数据框/表中?

输入架构:

root
  |-- metadata: struct
  |...
  |-- data :struct 
  |    |--node1 : struct
  |    |   |--name : string
  |    |   |--productlist: array
  |    |        |--element : struct
       |              |--productvalues: array
       |                   |--element : struct
       |                         |-- pname:string
       |                         |-- porders:array
       |                                |--element : struct
       |                                      |-- ordernum: int
       |                                      |-- field: string
       |--node2 : struct
  |        |--name : string
  |        |--productlist: array
  | …
Run Code Online (Sandbox Code Playgroud)

python dataframe avro apache-spark pyspark

6
推荐指数
1
解决办法
627
查看次数

Java clone()和equals()检查

对于下面的类,我理解c1.equals(c3)返回false c1.clone()会创建指向同一对象的不同引用.但为什么carList1.equals(carList2)回归真实?为什么它不同c1.equals(c3)?提前谢谢了!

class Car implements Cloneable {
   private String plate;   
   private double maxSpeed;     
  public Car(String lp, double max) {
      license = lp;
      maxSpeed = max;
   }
  public static void main(String[] args) throws Exception{
      Car c1 = new Car("ABC123", 150.0);
      Car c2 = new Car("ABC123", 150.0);
      Car c3 = (Car) c1.clone();
      ArrayList<Car> carList1 = new ArrayList<Car>();
      carList1.add(c1);
      carList1.add(c2);
      ArrayList carList2 = (ArrayList) carList1.clone();
  } 
}
Run Code Online (Sandbox Code Playgroud)

java clone equals arraylist object

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

LC3 LEA 指令和存储的值

我对这个问题感到困惑:指令“LEA R0,A"执行后寄存器 0 中存储的值是多少?为什么答案是 x370C?我认为它应该将A的地址加载到R0中?如果是这样,我们如何知道地址?有人可以帮忙吗?非常感谢!

.ORIG X3700
 LEA R0, A
 LDI R2, C LDR R3, R0, 2 
 AND R1, R1, #0 
 IN
 ST R0, D 
 JSR  F 
 HALT
F LD  R1, B
 ADD R1, R1, #1
 BRp F 
 RET

 A .FILL X1234
 B .FILL X370B
 C .FILL X370C
 D .BLKW 2
 E .STRINGZ "ABCD"
 G .FILL X1234
 .END
Run Code Online (Sandbox Code Playgroud)

assembly load cpu-registers lc3

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

c#延期评估和返回值

考虑到下面的例子,我很困惑为什么第一个例子的结果是4,8,6,第二个例子是4,8,3?对我来说,在第一个例子中,只评估succ(3)和dub(4),y应该是3?有人可以帮忙解释它是如何工作的吗?非常感谢!

例一:

public class Hello {
   public static void Main(string[] args) {
     int y = 0;
     Func<int,bool> even = (n) => { return n%2 == 0; }; 
     Func<int,int> dub = (n) => { y += 2; return n + n; };
     Func<int,int> succ = (n) => { y += 1; return n + 1; };

     Func<bool, int, int, int> if1 = (c, t, f) => c? t: f;

     y = 0;
     var a1 = if1(even(3), dub(3), succ(3));
     var a2 = …
Run Code Online (Sandbox Code Playgroud)

c# if-statement return func deferred

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

在Java中构建和使用Scanner

我正在查看Scanner用于读取文件的示例(使用Java).在一个示例中,Scanner使用以下构造:

s = new Scanner(new BufferedReader(new FileReader("input.txt"))
Run Code Online (Sandbox Code Playgroud)

但在另一个例子中,代码如下所示.我的问题是,Scanner下面宣布的方式是否有问题?我们不需要使用 s = new Scanner(new BufferedReader(new FileReader("input.txt"))构造函数吗?

int howMany;
Scanner scan = null;
File f;
String[] words = null;

try {
    f = new File(filename);
    scan= new Scanner(f);
    howMany = scan.nextInt();
    words = new String[howMany];

    for (int i = 0; i < howMany; i++) {
        words[i] = scan.next();
    }
} catch (IOException e) {
    System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

java io file-io constructor

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

Java转换,覆盖和多态

在下面的例子中,我认为它是关于运行时多态性的,但我无法弄清楚为什么要y.m1(x)打印出来A.我的理解是在类中y.m1()调用m1()方法B,因为y包含了一个对象B.既然x作为参数传递给它,并且它属于A比它宽的类,它B不会导致运行时错误吗?另外怎么z.m1(y)打印出去A

提前谢谢了!

 class A {
     public void m1(A a) {
         System.out.println("A");
     }
 }
 class B extends A {
      public void m1(B b) {
        System.out.println("B");
      }
  }
 class D2 {
       public static void main(String[] args) {
           A x = new A();
           A y = new B();
           B z = new B();
        } 
  }
Run Code Online (Sandbox Code Playgroud)

java polymorphism overriding casting typing

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

无法导入 org.slf4j.Logger- 如何将 jar 添加到类路径?

我正在学习使用 Maven 和 Log4J。在 POM 文件中,我添加了以下依赖项:

  <dependencies>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.12</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
     </dependency>   
  </dependencies>
Run Code Online (Sandbox Code Playgroud)

当我尝试import org.slf4j.Logger在主类中导入时,Eclipse 显示“无法解析导入 org.slf4j”。我搜索了一段时间寻找解决方案,似乎我需要在这里下载分发文件http://www.slf4j.org/download.html并“将 jar 添加到类路径”?我很困惑:Maven 不会自动下载吗?如何“将 jar 添加到类路径”?我是这里真正的初学者。非常感谢您的帮助!

java eclipse dependencies log4j maven

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