小编Ato*_*tom的帖子

使用scala连接Apache spark中不同RDD的数据集

有没有办法RDD在spark中连接两个不同s的数据集?

要求是 - 我使用具有相同列名的scala创建两个中间RDD,需要组合这两个RDD的结果并缓存访问UI的结果.如何在此处组合数据集?

RDD属于类型 spark.sql.SchemaRDD

scala distributed-computing apache-spark rdd apache-spark-sql

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

Apache火花在内存缓存中

Spark将工作数据集缓存到内存中,然后以内存速度执行计算.有没有办法控制工作集驻留在RAM中的时间?

我有大量的数据可以通过作业访问.最初将作业加载到RAM需要花费时间,当下一个作业到达时,它必须再次将所有数据加载到RAM,这非常耗时.有没有办法使用Spark将数据永久地(或指定的时间)缓存到RAM中?

java caching apache-spark

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

解决逻辑运算 - AND,OR,动态循环条件

我有一个传入的记录过滤器与逻辑子句一起存储,如下所示.

Acct1 = 'Y' AND Acct2 = 'N' AND Acct3 = 'N' AND Acct4 = 'N' AND Acct5 = 'N' AND ((Acct6 = 'N' OR Acct7 = 'N' AND Acct1 = 'Y') AND Formatted= 'N' AND Acct9 = 'N' AND (Acct10 = 'N' AND Acct11 = 'N') AND EditableField= 'N' )
Run Code Online (Sandbox Code Playgroud)

我输入此子句的数据将来自Csv文件,如下所示.

Country,Type,Usage,Acct1,Acct2,Acct3,Acct4,Acct5,Acct6,Acct7,Formatted,Acct9,Acct10,Acct11,EditableField
USA,Premium,Corporate,Y,N,Y,N,N,N,Y,N,Y,N,Y,N,
Mexico,Premium,Corporate,Y,N,Y,N,Y,N,Y,N,Y,N,Y,N,
USA,Premium,Corporate,Y,N,Y,N,N,N,N,Y,Y,N,Y,N,
USA,Premium,Corporate,Y,N,Y,N,Y,N,Y,Y,Y,N,Y,N,
Run Code Online (Sandbox Code Playgroud)

我将不得不根据条款中定义的条件过滤掉文件中的记录.这是一个简单子句的示例,但是会有比这更多的内部条件,并且只要用户需要就可以更改子句,并且记录必须按顺序传递10个这样的子句.

所以我正在寻找一种动态解释该子句并将其应用于传入记录的方法.请提供您有关如何设计/任何示例(如果有)的建议.

java algorithm parsing recursive-descent

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

spectJ 示例中的空指针异常

我正在尝试实现我们的 stackoverflow 成员在这里给出的建议之一:使用方面记录 java 中方法的进入、退出和异常。由于这本身是不同的问题,因此再次在这里发帖。

我尝试过搜索,但看起来不同的版本有不同的方法,并且无法在网上找到示例。我尝试了以下简单的示例,因为我是面向方面编程的新手,并且不知道如何实现。这个例子就是抛出NPE。请帮助我理解我哪里做错了。

====异常

Exception in thread "main" java.lang.NullPointerException
at aoplogging.SimpleCall.call(SimpleCall.java:13)
at aoplogging.App.main(App.java:18)
Run Code Online (Sandbox Code Playgroud)

正好在SimpleService.simpleCall();

应用上下文:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd">


<aop:aspectj-autoproxy />
<bean id="simpleCall" class="aoplogging.SimpleCall" />
Run Code Online (Sandbox Code Playgroud)

================== 应用程序.java

package aoplogging;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {


public static void main(String[] args) {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
    SimpleCall call =(SimpleCall) context.getBean("simpleCall");
    call.call();
    context.close();
}
Run Code Online (Sandbox Code Playgroud)

============ SimpleCall.java包aoplogging; …

java spring aspectj spring-aop pointcut

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

如何使用 pyspark 函数处理日期格式的 T 和 Z

我希望在将日期字符串转换为当前时区后从日期字符串中提取年、月、日和小时。我创建了以下独立代码,该代码导致空值。不确定如何处理数据中时间格式的 T 和 Z 分隔符。

from pyspark.sql.functions import unix_timestamp, from_unixtime

df = spark.createDataFrame(
    [("2020-02-28T09:49Z",)], 
    ['date_str']
)

df2 = df.select(
    'date_str', 
    from_unixtime(unix_timestamp('date_str', 'yyyy-MM-ddThh:mmZ')).alias('date')
)

df2.show()

Run Code Online (Sandbox Code Playgroud)

从上面的结果可以看出——

 +-----------------+----+
|         date_str|date|
+-----------------+----+
|2020-02-28T09:49Z|null|
+-----------------+----+
Run Code Online (Sandbox Code Playgroud)

有人可以指导我如何处理这个问题并在此处打印日期吗?

python dataframe apache-spark pyspark

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

使用keytab连接到安全的kerberos身份验证群集中的配置单元

我正在使用CDH 5.3.3并使用hive JDBC驱动程序连接到安全集群中的配置单元.我尝试使用keytab登录

UserGroupInformation.loginUserFromKeytab(lprincipal,keytabpath);

我使用以下格式的hive网址.

JDBC:hive2://本地主机:10000; AuthMech = 1; KrbRealm = EXAMPLE.COM; KrbHostFQDN = hs2.example.com; KrbServiceName =蜂巢

示例代码:

// Authenticating Kerberos principal
System.out.println("Principal Authentication: ");
final String user = "cloudera@CLOUDERA.COM";
final String keyPath = "cloudera.keytab";
UserGroupInformation.loginUserFromKeytab(user, keyPath);
Connection connection = DriverManager.getConnection(url);
Run Code Online (Sandbox Code Playgroud)

网址格式如下:

JDBC:hive2://本地主机:10000; AuthMech = 1; KrbRealm = EXAMPLE.COM; KrbHostFQDN = hs2.example.com; KrbServiceName =蜂巢

我得到以下异常,如果在确定此问题的原因时提供了一些帮助,我将不胜感激:

com.cloudera.hive.support.exceptions.GeneralException: CONN_KERBEROS_AUTHENTICATION_ERROR_GET_TICKETCACHE

javax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication
at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:800)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:671)
at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:584)
at sun.reflect.NativeMethodAccessorImpl.inv
Run Code Online (Sandbox Code Playgroud)

对于不同的集群分布,添加调试后,我看到以下异常:

DEBUG org.apache.hadoop.security.UserGroupInformation: hadoop login
DEBUG org.apache.hadoop.security.UserGroupInformation: …
Run Code Online (Sandbox Code Playgroud)

hadoop hive kerberos cloudera hadoop-yarn

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

java复杂逻辑条件解析器

我有一组传入记录,需要在一组定义和存储的逻辑子句下进行评估。一个示例逻辑子句如下:

Acct1 != 'Y' AND Acct2 > 1004 AND Acct3 >= 96 AND Acct4 < 1004 AND Acct5 = 99 AND ((Acct6 <= 9090 OR Acct7 IN (A1,A2,A6) AND Acct1 NOT IN (A3,A4)) AND Formatted LIKE 'LINUX' AND Acct9 NOT LIKE 'WINDOWS' AND (Acct10 = 'N' AND NOT Acct11 = 'N') AND EditableField BETWEEN (10 AND 20) )
Run Code Online (Sandbox Code Playgroud)

我输入到该条款​​的数据如下:

map.put(Acct1,"Y")
map.put(Acct2,1010)
map.put(Acct3,99)
map.put(Acct4,1015)
map.put(Acct5,99)
map.put(Acct6,9090)
map.put(Acct7,"A3")
map.put(Formatted,"LINUX_INST")
map.put(Updated,"LINUX_TMP")
map.put(Acct10,"Y")
map.put(Acct11,"N")
map.put(EditableFIeld,25)
Run Code Online (Sandbox Code Playgroud)

我必须将填充到映射中的传入记录评估到上面定义的子句上,并根据评估结果打印 true 或 false。

子句条件和映射值也将被更改和执行。

我有以下条件子句需要评估:

!=
>
>= …
Run Code Online (Sandbox Code Playgroud)

java algorithm parsing recursive-descent logical-operators

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