小编use*_*629的帖子

从 HDFS 读取文件并将内容分配给字符串

在 Scala 中,如何读取文件HDFS并将内容分配给变量。我知道如何读取文件并且可以打印它。但是如果我尝试将内容分配给一个字符串,它将输出为 Unit()。下面是我试过的代码。

 val dfs = org.apache.hadoop.fs.FileSystem.get(config);
 val snapshot_file = "/path/to/file/test.txt"
val stream = dfs.open(new Path(snapshot_file))
 def readLines = Stream.cons(stream.readLine, Stream.continually( stream.readLine))
readLines.takeWhile(_ != null).foreach(line => println(line))
Run Code Online (Sandbox Code Playgroud)

上面的代码正确打印输出。但是如果我尝试将输出分配给一个字符串,我会得到正确的输出。

val snapshot_id = readLines.takeWhile(_ != null).foreach(line => println(line))
snapshot_id: Unit = ()
Run Code Online (Sandbox Code Playgroud)

将内容分配给变量的正确方法是什么?

hadoop scala hdfs

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

DataFrame到Spark中的Json数组

我正在用Java编写Spark应用程序,该应用程序读取HiveTable并将输出以Json格式存储在HDFS中。

我使用读取了配置单元表HiveContext,它返回了DataFrame。下面是代码片段。

 SparkConf conf = new SparkConf().setAppName("App");
 JavaSparkContext sc = new JavaSparkContext(conf);
 HiveContext hiveContext = new org.apache.spark.sql.hive.HiveContext(sc);

DataFrame data1= hiveContext.sql("select * from tableName")
Run Code Online (Sandbox Code Playgroud)

现在我想转换DataFrameJsonArray。例如,data1数据如下所示

|  A  |     B     |
-------------------
|  1  | test      |
|  2  | mytest    |
Run Code Online (Sandbox Code Playgroud)

我需要如下输出

[{1:"test"},{2:"mytest"}]
Run Code Online (Sandbox Code Playgroud)

我尝试使用data1.schema.json(),它给了我下面的输出,而不是数组。

{1:"test"}
{2:"mytest"}
Run Code Online (Sandbox Code Playgroud)

什么是正确的做法或功能转换DataFramejsonArray不使用任何第三方库。

java arrays json apache-spark

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

在Scala中将任何类型的数组包装为数组类型

我有一个 Any 类型的 WrappedArray 值。我如何转换为数组。

例如:

val flds = valArr(0)(2)
flds: Any = WrappedArray(F1,F2,F3,F4,F5)
Run Code Online (Sandbox Code Playgroud)

我尝试将 flds 转换为 String Array ..

val flds = valArr(0)(2).toArray
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

<console>:41: error: value toArray is not a member of Any
Run Code Online (Sandbox Code Playgroud)

我如何转换..?我只是想遍历wrappedArray,但我不知道该怎么做..这就是为什么我试图将其转换为数组并遍历它。

arrays scala apache-spark

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

HiveContext - 无法访问hive中映射的hbase表作为外部表

我正在尝试使用Spark中的HiveContext访问hive中映射的hbase表.但是我得到了ClassNotFoundException例外.下面是我的代码.

import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
val df = sqlContext.sql("select * from dbn.hvehbasetable") 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误..

17/06/22 07:17:30错误日志:initSerDe中的错误:java.lang.ClassNotFoundException未找到类org.apache.hadoop.hive.hbase.HBaseSerDe java.lang.ClassNotFoundException:类org.apache.hadoop.hive在org.apache的org.apache.hadoop.conf.Contaiguration.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:385)的org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2120)找不到.hbase.HBaseSerDe位于org.apache.hadoop.hive的org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:258)的.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:276) .g.apache.spark.cl.位于org.apache.spark的scala.Option.map(Option.scala:145)的.apache.spark.sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1 $$ anonfun $ 3.apply(ClientWrapper.scala:337) .sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1.适用(ClientWrapp er.scala:337)org.apache.spark.sql.hive.client.ClientWrapper $$ anonfun $ getTableOption $ 1.apply(ClientWrapper.scala:332)at org.apache.spark.sql.hive.client.ClientWrapper $ $ anonfun $ withHiveState $ 1.apply(ClientWrapper.scala:290)at org.apache.spark.sql.hive.client.ClientWrapper.liftedTree1 $ 1(ClientWrapper.scala:237)

任何人都可以帮助我导入哪些类来读取hbase表.

hbase scala apache-spark hivecontext spark-submit

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

展平SetMultiMap并保留插入顺序

LinkedHashMultimap在我的项目中使用.我需要在保留插入顺序的同时展平值.例如用

SetMultimap<String, Integer> m =  LinkedHashMultimap.create();
m.put("a", 1);
m.put("b",2);
m.put("a",3);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

a : [1,3]
b : 2
Run Code Online (Sandbox Code Playgroud)

但是我需要

a : 1
b : 2
a : 3
Run Code Online (Sandbox Code Playgroud)

或者我需要输出在List中

[a,1,b,2,a,3]
Run Code Online (Sandbox Code Playgroud)

PS我正在使用,LinkedHashMultimap因为我不想复制valuesa key,我需要保留插入顺序

我怎么能这样做,所以我可以迭代上面的输出进行进一步处理?

java multimap guava

0
推荐指数
1
解决办法
189
查看次数

迭代地图列表时出现无限循环问题

我的下面的代码导致无限循环.我加入3 mapsArrayList并试图迭代listMaps.但我不知道造成无限循环的原因.我知道我可能会犯一些愚蠢的错误,但我无法理解.有人可以帮忙吗?

package paddy.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Maptest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Map < String, Integer > m = new HashMap<String, Integer>();

        m.put("a", 1);
        m.put("b", 1);
        m.put("c", 1);
        m.put("d", 1);
        m.put("e", 1);

        Map < String, Integer > m1 = new HashMap<String, Integer>();

        m1.put("a", 1);
        m1.put("b", 1);
        m1.put("c", 1);
        m1.put("d", 1);
        m1.put("e", 1);

        Map < String, Integer …
Run Code Online (Sandbox Code Playgroud)

java

-1
推荐指数
1
解决办法
53
查看次数

标签 统计

apache-spark ×3

java ×3

scala ×3

arrays ×2

guava ×1

hadoop ×1

hbase ×1

hdfs ×1

hivecontext ×1

json ×1

multimap ×1

spark-submit ×1