当前位置: 首页 > 知识库问答 >
问题:

使用createOrReplaceTempView替换未按预期工作的临时视图

国斌斌
2023-03-14

我有一个类似的数据集

{"name": "Michael", "age": "30", "producta1": "blah1", "producta3": "blah2"}
{"name": "Michael", "age": "31", "producta1": "blah3", "producta3": "blah4"}
{"name": "Michael", "age": "30", "producta1": "blah5", "producta3": "blah6"}
{"name": "Andy", "age": "28", "producta1": "blah5", "producta3": "blah6"}
{"name": "Andy", "age": "28", "producta1": "blah5", "producta3": "blah6"}
{"name": "Andy", "age": "28", "producta1": "blah5", "producta3": "blah6"}
{"name": "Justin", "age": "12", "producta1": "blah5", "producta3": "blah6"}
{"name": "Justin", "age": "12", "producta1": "blah5", "producta3": "blah6"}

我的星火密码是

SparkSession sc = SparkSession.builder().appName("example app").config("spark.master","local").getOrCreate();

Dataset<Row> df = sc.read().json("/Users/g.bhageshpur/Downloads/spark-master/examples/src/main/examples/src/main/resources/people.json");

df.createOrReplaceTempView("people");

Dataset<Row> dfpeople = sc.sql("select * from people where name='Michael'");

dfpeople.createOrReplaceTempView("people");

我试图通过调用createOrReplaceTempView来替换people视图

但我得到如下错误

Recursive view `people` detected (cycle: `people` -> `people`)

如何替换spark中的视图?

共有1个答案

郤旭东
2023-03-14

所以我通过下面的代码得到了上述问题的解决方案


Dataset<Row> df = sc.read().json("/Users/g.bhageshpur/Downloads/spark-master/examples/src/main/examples/src/main/resources/policy.json");

df.createOrReplaceTempView("policy");

Dataset<Row> dfpolicy = sc.sql("select * from policy where name='Full'");

sc.sqlContext().dropTempTable("policy");

dfpolicy.createOrReplaceTempView("policy");

 类似资料:
  • 我有一个应用程序实体,其中包含一些参数,如CustomerName、Address和CardNumber。在用Jackson将其序列化为JSON时,我希望卡号被屏蔽。例如,如果CardNumber为1234567890134,我希望JSON的值为CardNumber:1234*******1234。所以我在Card Number属性上添加了@JsonSerialize注释,并使其使用我的自定义序列

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里