我们在Android应用中使用Retrofit与OAuth2安全服务器进行通信.一切都很好,我们使用RequestInterceptor在每次调用时包含访问令牌.但是,有时候,访问令牌将过期,并且需要刷新令牌.当令牌过期时,下一个调用将返回一个未授权的HTTP代码,因此很容易监控.我们可以通过以下方式修改每个Retrofit调用:在失败回调中,检查错误代码,如果它等于Unauthorized,则刷新OAuth令牌,然后重复Retrofit调用.但是,为此,应修改所有呼叫,这不是一个易于维护的好解决方案.有没有办法在不修改所有Retrofit调用的情况下执行此操作?
我需要一个窗口函数,它按一些键(=列名称)进行分区,按另一个列名称进行排序,并返回前x行的行.
这适用于升序:
def getTopX(df: DataFrame, top_x: String, top_key: String, top_value:String): DataFrame ={
val top_keys: List[String] = top_key.split(", ").map(_.trim).toList
val w = Window.partitionBy(top_keys(1),top_keys.drop(1):_*)
.orderBy(top_value)
val rankCondition = "rn < "+top_x.toString
val dfTop = df.withColumn("rn",row_number().over(w))
.where(rankCondition).drop("rn")
return dfTop
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将其更改为第4行orderBy(desc(top_value))
或orderBy(top_value.desc)
第4行时,我收到语法错误.这里的语法是什么?
我是Spring和J2EE的新手.我在使用带有Spring Boot自动配置的JDBC模板时遇到了麻烦.
我做的是我采用这里提供的RESTful Web服务的例子, 并决定扩展它以使用JDBC模板关系数据库访问.不幸的是,提供的另一个例子没有用,因为不考虑从xml beans文件提供dataSource的唯一困难.
我尝试了在Stack或Google上找到的所有内容.大多数示例都严重过时或未得到答复,或与Spring Boot Autoconfiguration等无关.
我不断得到Property 'dataSource' is required
错误,经过努力,如果最终设法将application-config.xml
文件与bean 链接,但无法设法为JDBC的数据源自动装配.
我绝望地完成它并严重阻止,出于想法,如果有人可以提供最新的示例与Spring Boot自动配置,XML中的bean查找,JDBC的自动装配数据源,我会很高兴.
或者至少是一些想法,线索,甚至是如何寻找它,因为我甚至没有谷歌的关键词.
谢谢!
package ws;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ComponentScan
@ImportResource("classpath:spring/application-config.xml")
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
package ws;
import dao.UserDAOImpl;
import model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public …
Run Code Online (Sandbox Code Playgroud) 我想设置spark.eventLog.enabled
和spark.eventLog.dir
在spark-submit
或start-all
级别 - 不要求它在scala/java/python代码中启用.我尝试了各种各样的事情但没有成功:
spark-defualts.conf
为spark.eventLog.enabled true
spark.eventLog.dir hdfs://namenode:8021/directory
Run Code Online (Sandbox Code Playgroud)
要么
spark.eventLog.enabled true
spark.eventLog.dir file:///some/where
Run Code Online (Sandbox Code Playgroud)
spark-submit
方式:spark-submit --conf "spark.eventLog.enabled=true" --conf "spark.eventLog.dir=file:///tmp/test" --master spark://server:7077 examples/src/main/python/pi.py
Run Code Online (Sandbox Code Playgroud)
SPARK_DAEMON_JAVA_OPTS="-Dspark.eventLog.enabled=true -Dspark.history.fs.logDirectory=$sparkHistoryDir -Dspark.history.provider=org.apache.spark.deploy.history.FsHistoryProvider -Dspark.history.fs.cleaner.enabled=true -Dspark.history.fs.cleaner.interval=2d"
Run Code Online (Sandbox Code Playgroud)
只是为了矫枉过正:
SPARK_HISTORY_OPTS="-Dspark.eventLog.enabled=true -Dspark.history.fs.logDirectory=$sparkHistoryDir -Dspark.history.provider=org.apache.spark.deploy.history.FsHistoryProvider -Dspark.history.fs.cleaner.enabled=true -Dspark.history.fs.cleaner.interval=2d"
Run Code Online (Sandbox Code Playgroud)
这些事情必须在何处以及如何设定以获取任意工作的历史?
我一直mapWithState
在Spark Streaming中使用API,但有两点不清楚StateSpec.function
:
假设我的功能是:
def trackStateForKey(batchTime: Time,
key: Long,
newValue: Option[JobData],
currentState: State[JobData]): Option[(Long, JobData)]
Run Code Online (Sandbox Code Playgroud)
为什么新值是一种Option[T]
类型?据我所知,它总是为我定义,并且因为该方法应该以新状态调用,所以我真的没有看到为什么它可以是可选的.
返回值是什么意思?我试图在文档和源代码中找到一些指针,但没有一个描述它的用途.由于我正在使用state.remove()
和修改密钥的状态state.update()
,为什么我必须对返回值执行相同的操作?
在我当前的实现中,None
如果我删除密钥,我将返回,Some(newState)
如果我更新它,但我不确定这是否正确.
Kotlin Android扩展插件会为每个视图生成静态属性,并带有我的应用布局文件中的ID,如文档所述。
我想禁用此功能,因为我们使用DataBinding而不是Kotlin综合视图属性,有时我是无意中导入它们的;还会增加一些我们不使用的东西的额外构建开销。
无法禁用Android扩展插件,因为我们使用了由同一插件完成的Parcelize功能。
我正在使用带有kafka主题的火花流。主题创建有5个分区。我的所有消息都使用表名作为键发布到kafka主题。鉴于此,我假设该表的所有消息都应转到同一分区。但我注意到在同一张表的Spark日志消息中,有时会到达执行者的node-1,有时会到达执行者的node-2。
我正在使用以下命令在yarn-cluster模式下运行代码:
spark-submit --name DataProcessor --master yarn-cluster --files /opt/ETL_JAR/executor-log4j-spark.xml,/opt/ETL_JAR/driver-log4j-spark.xml,/opt/ETL_JAR/application.properties --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=driver-log4j-spark.xml" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=executor-log4j-spark.xml" --class com.test.DataProcessor /opt/ETL_JAR/etl-all-1.0.jar
Run Code Online (Sandbox Code Playgroud)
该提交创建了一个驱动程序,可以在node-1上说,在node-1和node-2上可以说两个执行程序。
我不希望节点1和节点2执行程序读取相同的分区。但这正在发生
还尝试了以下配置以指定使用者组,但没有区别。
kafkaParams.put("group.id", "app1");
Run Code Online (Sandbox Code Playgroud)
这就是我们使用createDirectStream方法创建流的方式*不是通过zookeeper。
HashMap<String, String> kafkaParams = new HashMap<String, String>();
kafkaParams.put("metadata.broker.list", brokers);
kafkaParams.put("auto.offset.reset", "largest");
kafkaParams.put("group.id", "app1");
JavaPairInputDStream<String, String> messages = KafkaUtils.createDirectStream(
jssc,
String.class,
String.class,
StringDecoder.class,
StringDecoder.class,
kafkaParams,
topicsSet
);
Run Code Online (Sandbox Code Playgroud)
完整代码:
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.apache.commons.lang3.StringUtils;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.VoidFunction;
import org.apache.spark.streaming.Durations;
import org.apache.spark.streaming.api.java.JavaDStream;
import org.apache.spark.streaming.api.java.JavaPairInputDStream;
import org.apache.spark.streaming.api.java.JavaStreamingContext;
import org.apache.spark.streaming.api.java.JavaStreamingContextFactory;
import …
Run Code Online (Sandbox Code Playgroud) java apache-kafka apache-spark spark-streaming kafka-consumer-api
我已将我的Android项目升级为使用最新的Android Studio 3.0功能.从那时起,我在每个Gradle同步上收到以下警告消息:
警告:您使用的其中一个插件支持Java 8语言功能.要尝试Android插件中内置的支持,请从build.gradle中删除以下内容:apply plugin:'dexguard'要了解详情,请访问https://d.android.com/r/tools/java-8-support -message.html
如果我转到链接的网址,我可以看到:
如果Android Studio检测到您的项目使用的是Jack,Retrolambda或DexGuard,则IDE会使用这些工具提供的Java 8支持.
有Jack和Retrolambda的迁移文档,但DexGuard没有.
我的问题是:
我正在运行Android Studio 3.0和DexGuard 8.0.16
apache-spark ×4
android ×2
scala ×2
apache-kafka ×1
autowired ×1
datasource ×1
dexguard ×1
java ×1
jdbc ×1
kotlin ×1
oauth-2.0 ×1
retrofit ×1
spring ×1
spring-boot ×1