小编Rah*_*kar的帖子

如何使用java Runtime执行交互式shell脚本?

我想知道有没有办法执行以下shell脚本,它等待使用java的Runtime类的用户输入?

#!/bin/bash

echo "Please enter your name:"
read name
echo "Welcome $name"
Run Code Online (Sandbox Code Playgroud)

我使用以下java代码来执行此任务,但它只显示空白控制台.

public class TestShellScript {
public static void main(String[] args) {

        File wd = new File("/mnt/client/");
           System.out.println("Working Directory: " +wd);
           Process proc = null;

           try {
               proc = Runtime.getRuntime().exec("sudo ./test.sh", null, wd);

           } catch (Exception e) {
             e.printStackTrace();
             }


}
Run Code Online (Sandbox Code Playgroud)

}

事情就是当我执行上面的程序时,我相信它将执行一个shell脚本,而shell脚本将等待用户输入,但它只是打印当前目录然后退出.有没有办法做到这一点,或者根本不可能在java中?

提前致谢

java runtime.exec

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

Redisson 捕获密钥过期事件

我在我的大数据应用程序中使用 Redis 作为缓存服务。Redis 的主要目的是验证我们从每个请求中收到的密钥。

我们使用 RMap 来存储键值对,示例如下:

key = 1212sads23sads341212saas23asds45
value = Regular java object with some complex data.
Run Code Online (Sandbox Code Playgroud)

我想为我插入的每个键分配 TTL,我知道我可以使用RMap.expire(). 我没有得到的是,当特定密钥到期时我怎么能听。由于每个键都有不同的 TTL,正如 Redis 文档中所述,它负责键的自动过期并生成事件。

我的问题是,

  1. 如何捕获生成的 EXPIRE 事件并获取它在 Redisson java 库中生成的键?

  2. 这是更好的方法(redis 内置自动过期),还是运行一些检查过期键的线程更好?

java redis redisson

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

如何在Linux中获取某些进程修改的文件

需要找出某些过程修改过的文件.

试过lsof -p processid 它给出了某些进程打开的所有文件.我只想要一个命令或一组命令来获取某些进程打开和修改的所有文件.

linux shell

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

带有空值的 SQL 自连接

我将所有员工(经理和员工)放在一张名为“员工”的表下。表如下所示,

桌子

+-------+------------+---------+---------+------------+
|emp_id | name       | dept_id | salary  | manager_id |
+=======+============+=========+=========+============+
|  1    | Sally      |   1     | 20000   |  null      |
|  2    | Ajit       |   2     | 20000   |   1        |
|  3    | Rahul      |   1     | 20000   |   1        |
|  4    | uday       |   1     | 20000   |   null     |
|  5    | john       |   1     | 20000   |   null     |
|  6    | netaji     |   2     | 20000   |    2       | …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

Java Spark Streaming JSON解析

我已经开始从Spark引擎学习火花流,并且很新的数据分析和火花.我只是想创建一个小IOT应用程序,我想在其中预测未来的数据.

我有Tiva硬件,它发送实时传感器JSON数据如下,

[{"t":1478091719000,"sensors":[{"s":"s1","d":"+253.437"},{"s":"s2","d":"+129.750"},{"s":"s3","d":"+45.500"},{"s":"s4","d":"+255.687"},{"s":"s5","d":"+290.062"},{"s":"s6","d":"+281.500"},{"s":"s7","d":"+308.250"},{"s":"s8","d":"+313.812"}]}]
Run Code Online (Sandbox Code Playgroud)

在此t中是发布数据的unix时间戳.传感器是传感器阵列,每个传感器('s')数据为'd'.

我想要做的是,使用这些数据并创建火花流的对象,然后通过spark的Mlib(机器学习)或等效库传递所有数据以预测未来的数据.

我想要了解所有技术选择是否可行

  1. 我决定用?
  2. 我如何使用嵌套的JSON?我尝试使用SQLContext但没有成功.
  3. 实现我在这里尝试做的一般准则.

这是我用来消费来自KAFKA的消息的代码.

SparkConf conf = new SparkConf().setAppName("DattusSpark").setMaster("local[2]");

    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaStreamingContext ssc = new JavaStreamingContext(sc, new Duration(2000));

    // TODO: processing pipeline
    Map<String, String> kafkaParams = new HashMap<String, String>();
    kafkaParams.put("metadata.broker.list", "kafkaserver_address:9092");
    Set<String> topics = Collections.singleton("RAH");


    JavaPairInputDStream<String, String> directKafkaStream = 
            KafkaUtils.createDirectStream(ssc, String.class, String.class, StringDecoder.class,
                    StringDecoder.class, kafkaParams, topics);


    JavaDStream<String> json = directKafkaStream.map(new Function<Tuple2<String,String>, String>() {
        public String call(Tuple2<String,String> message) throws Exception {
            System.out.println(message._2());
            return message._2();
        };
    });


    System.out.println(" json is  0------ 0"+ json); …
Run Code Online (Sandbox Code Playgroud)

java machine-learning forecasting apache-spark spark-streaming

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

批处理文件Errorlevel问题

我在Windows 7 Enterprise上并从批处理文件调用jar,根据条件返回0,1或2,我使用了"System.exit",

以下是我的批处理脚本

@echo off

java -jar "test.jar" %*
set exitcode=%ERRORLEVEL%
echo here is 1st exit code %exitcode%
if %exitcode% == 2 (    
        VERIFY > nul
        set exitcode=%ERRORLEVEL%
        echo here is 2nd exit code after VERIFY %exitcode%
        call test.exe %*
        echo here is 2nd exit code %ERRORLEVEL% 

    if %ERRORLEVEL% == 0    (
           cmd /c "exit /b 0"
           call test1.exe -f
           echo here is 3rd exit code %errorlevel%
    )
)exit /b %errorlevel%
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中做的是,调用一个jar并依赖于errorlevel它返回我调用另一个exe并再次取决于该exe的错误级别我调用第三个exe.问题是,我得到的exitcode是第一个退出代码分配,即如果test.jar与2存在,即使在成功执行其他exes之后,errorlevel也不会被更改.第三个exe永远不会被执行.尝试了不同的呼叫方法

cmd退出/ b 0

将errorlevel重置为0但不起作用.

java batch-file

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

如何在Java中解析Spark流中的复杂JSON数据

我们正在开发一个物联网应用程序

我们从每个要运行分析的设备获取以下数据流,

[{"t":1481368346000,"sensors":[{"s":"s1","d":"+149.625"},{"s":"s2","d":"+23.062"},{"s":"s3","d":"+16.375"},{"s":"s4","d":"+235.937"},{"s":"s5","d":"+271.437"},{"s":"s6","d":"+265.937"},{"s":"s7","d":"+295.562"},{"s":"s8","d":"+301.687"}]}]
Run Code Online (Sandbox Code Playgroud)

在初级阶段,我能够使用spark java代码获取模式,如下所示,

    root
     |-- sensors: array (nullable = true)
     |    |-- element: struct (containsNull = true)
     |    |    |-- d: string (nullable = true)
     |    |    |-- s: string (nullable = true)
     |-- t: long (nullable = true)
Run Code Online (Sandbox Code Playgroud)

我写的代码是,

    JavaDStream<String> json = directKafkaStream.map(new Function<Tuple2<String,String>, String>() {
        public String call(Tuple2<String,String> message) throws Exception {
            return message._2();
        };
    });

    SQLContext sqlContext = spark.sqlContext();
    json.foreachRDD(new VoidFunction<JavaRDD<String>>() {
        @Override
        public void call(JavaRDD<String> jsonRecord) throws Exception {

            Dataset<Row> row = sqlContext.read().json(jsonRecord).toDF();
            row.createOrReplaceTempView("MyTable"); …
Run Code Online (Sandbox Code Playgroud)

java json analytics apache-spark spark-streaming

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